我是mockito新手。这是一个简单且很酷的框架(它让我喜欢测试:))。
我正在测试一个复杂的方法: 在此方法中,我仅在数据更改时调用服务。
public void testMyFacadeMethod() {
....
If (dataChanged) {
myService.callServiceMethod();
}
}
在我的测试方法中:我准备模拟,然后更改数据并调用
verify(myService).callServiceMethod();
一切都很好,我的测试通过了。 在同一个测试方法中,我回想起我的facadeMethod,因此不得调用myService.callServiceMethod(因为我的数据不会更改)。 测试失败:
verify(myService).callServiceMethod();
myFacadeMethod() <== tested method
verify(myService, times(0)).callServiceMethod(); <= tell me that this method is called once
我的问题是:mockito 是否存储此行之前调用该方法的次数?所以第一次调用不会重置计数器?
对我来说,第二次调用 verify 方法只会计算第一次调用 verify 后的调用次数(我知道我的生活变得复杂了:p)
谢谢你,对我的英语感到抱歉。
您是否推荐任何测试电子书来学习测试艺术?
最佳答案
是的,Mockito 不会自动重置方法调用的次数。
您可以使用 Mockito.reset(T)
重置您的模拟。
但是,您应该尽量避免使用该方法。如果测试代码是智能的,则通常没有必要,因此它的存在可能表明代码有异味。看 http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#17
关于java - 当我想测试一个复杂的方法时,mockito 是否存储操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27218176/