[英]How to stub method using Mockito in java
我有一个实现接口 I 的单例类 S。单例类有一个方法 A,它反过来调用方法 B。我必须测试方法 A。
这是我的单身课程
public class S implements I{
private static S INSTANCE = new S();
public static I getInstance(){
return INSTANCE;
}
public String methodA(){
methodB();
}
}
这就是我的方法在测试类中的样子。
public void testMethodA(){
S so = S.getInstance();
S spy = Mockito.spy(so);
Mockito.doReturn(something).when(spy).methodB(); // I have to cut the dependency of this method B, hence will stub this
String exp_value = 'X';
assertEquals(exp_value,spy.methodA);
}
问题是,实际的方法 B 被称为存根的 instsead,因此我的测试失败了。 任何人都可以帮忙,如果我在这里做错了什么,请告诉我。
您的代码经过一些修改后会按预期编译和运行。 这是一个自包含的运行示例。
public class StackOverflow59960713 {
public interface I {
String methodA();
}
public static class S implements I {
private static S INSTANCE = new S();
public static I getInstance() {
return INSTANCE;
}
public String methodA() {
return methodB();
}
public String methodB() {
return "abc";
}
}
@Test
public void testMethodA() {
S so = (S) S.getInstance(); <== getInstance() returns I not S
S spy = Mockito.spy(so);
Mockito.doReturn("123").when(spy).methodB();
String exp_value = "123";
assertEquals(exp_value, spy.methodA()); <=== methodA() not methodA
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.