我有一个返回不同字符串的类。我希望能够存储此类中的所有方法,而无需显式地存根每个方法。 mockito有正则表达式的存根吗?
谢谢
答案 0 :(得分:1)
您可以实现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
。