使用mockito进行单元测试(部分模拟)
我和Mockito有问题。
有可能做这样的事情:
ClassX x = mock(ClassX.class)
when(x.methodB()).thenReturn("toto");
String result = x.methodA();
我正在和Mockito 1.7合作。
我看到有一个“间谍”系统,但他们说不建议在我们测试的项目上使用它(为什么?)
无论如何我尝试了间谍功能,但我得到了一个奇怪的行为。
检查我想做什么:
真实代码:
String methodA(String arg) {
return this.methodB(arg);
}
String methodB(String arg) {
return "toto";
}
测试代码:
@Test
public void testTest() {
final ClassX x = spy( new ClassX() );
final String argument = "arg";
doReturn("good").when(helper).methodB(argument);
assertTrue( x.methodB(argument).equals("good") );
assertTrue( x.methodA(argument).equals("good") );
}
正如他们所说,我避免了当时的返回语法,这可能是间谍的一个问题(但无论如何它都无法正常工作)
奇怪的是:
assertTrue(x.methodB(argument).equals(“good”));
没关系
只有第二个
assertTrue(x.methodA(argument).equals(“good”));
不行
实际上helper.methodA(参数)返回“toto” - >实际结果而不是模拟结果
在这种情况下,不可能告诉mockito返回“好”?似乎当测试类调用methodB时没关系,但是如果spy的方法调用了methodB它就不再起作用了......
我不知道该做什么...对同一个类的2个方法进行单元测试并使测试彼此独立是如此奇怪,以便着名的模拟测试框架不实现这个基本功能?这不是我们所说的真正的单元测试吗?不明白为什么他们说避免在被测对象上使用间谍方法...
谢谢
没有找到相关结果
已邀请:
2 个回复
橙绥
素汞读