我目前正在编写黑盒测试,我必须使用 Mockito 验证是否使用特定参数调用了方法池中的一个方法。是否调用特定方法并不重要,但必须调用其中一个方法。此外,如果方法被调用,我想验证它们是否仅使用特定参数调用。
在具体层面上:
我有这个类被模拟并注入我的黑匣子:
class Mock {
void option1(String arg1)
void option2(String arg1, int arg2)
void option3(String arg1, int arg2, int arg3)
void otherMethod()
}
在黑盒内,一个或多个“optionX”方法被调用一次或多次。
现在我想验证至少有一个“optionX”方法在黑盒子中被调用,并且如果任何“optionX”方法被调用,它只会用特定的参数调用。
目前的测试代码是这样的
Mock mock = spy(realObject);
blackbox.doBlackboxStuff(mock);
verify(mock, atLeast(1)).option1("Test");
verify(mock, atLeast(1)).option2("Test", 1);
verify(mock, atLeast(1)).option3("Test", 1, 2);
verifyNoMoreInteractions(mock);
像上面这样单独的“atLeast(1) 验证”是行不通的,因为这样每个方法都必须被调用。此外,我不能保证黑盒不会调用 otherMethod(),因此 verifyNoMoreInteractions 将失败,即使我不关心 otherMethod() 调用。
有没有一种优雅的方法来解决这个问题(或者至少是一种方法)?
饮歌长啸
沧海一幻觉
相关分类