如何在同一个模拟类中存根所有方法



我有一个返回不同字符串的类。我希望能够存根这个类中的所有方法,而不必显式地存根每个方法。mockito有正则表达式的存根吗?

感谢

您可以实现Answer接口来执行您想要的操作。下面是一个测试案例,展示了它的作用:

package com.sandbox;
import org.junit.Test;
import org.mockito.invocation.InvocationOnMock;
import org.mockito.stubbing.Answer;
import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
public class SandboxTest {
    @Test
    public void testMocking() {
        Foo foo = mock(Foo.class, new Answer() {
            @Override
            public Object answer(InvocationOnMock invocation) throws Throwable {
                String name = invocation.getMethod().getName();
                if (name.contains("get")) {
                    return "this is a getter";
                }
                return null;
            }
        });
        assertEquals("this is a getter", foo.getY());
        assertEquals("this is a getter", foo.getX());
    }
    public static class Foo {
        private String x;
        private String y;
        public String getX() {
            return x;
        }
        public void setX(String x) {
            this.x = x;
        }
        public String getY() {
            return y;
        }
        public void setY(String y) {
            this.y = y;
        }
    }
}

如果需要,您可以使用正则表达式匹配器,而不是使用contains

相关内容

  • 没有找到相关文章

最新更新