在进行单元测试时,使用模拟(mock)时,我经常需要检查模拟对象的某个方法是否被调用,并且传入了正确的参数。这意味着我必须找到一种途径来查看传递给被测试方法的参数。在Spock中,可以使用以下类似的方式实现:
使用Mockito(和JUnit),我认为唯一的方法是使用doAnswer和verify,类似于:
1 * serviceMock.operate(*_) >> { args ->
def argument = args[0]
assert expectedValue = argument.actualValue
}
使用Mockito(和JUnit),我认为唯一的方法是使用doAnswer和verify,类似于:
doAnswer(new Answer() {
//check arguments here
}).when(service).operate(any(Data.class));
然后我必须验证操作实际上是否被调用,具体如下:
verify(service).operate(any(Data.class));
然而,上述代码会干扰doAnswer
,就好像它是实际调用的方法一样。那么我该如何解决这个问题,以便既能验证方法是否被调用,又能验证传递给它的参数是否正确?