我正在使用Mockito在Java中编写单元测试,我想验证某个方法是最后一个调用对象的方法.
我正在测试的代码中做这样的事情:
row.setSomething(value); row.setSomethingElse(anotherValue); row.editABunchMoreStuff(); row.saveToDatabase();
在我的模拟中,我并不关心我在行上编辑所有内容的顺序,但是在我保存它之后我不再尝试对它做任何事情是非常重要的.有没有办法做到这一点?
请注意,我不是在寻找verifyNoMoreInteractions:它不会确认saveToDatabase是最后调用的东西,如果我在没有显式验证的行上调用任何内容,它也会失败.我希望能够说出类似的话:
verify(row).setSomething(value); verify(row).setSomethingElse(anotherValue); verifyTheLastThingCalledOn(row).saveToDatabase();
如果它有帮助,我将从JMock测试中切换到Mockito:
row.expects(once()).method("saveToDatabase").id("save"); row.expects(never()).method(ANYTHING).after("save");
Kent Lai.. 56
我认为这需要更多的定制工作.
verify(row, new LastCall()).saveToDatabase();
然后
public class LastCall implements VerificationMode { public void verify(VerificationData data) { Listinvocations = data.getAllInvocations(); InvocationMatcher matcher = data.getWanted(); Invocation invocation = invocations.get(invocations.size() - 1); if (!matcher.matches(invocation)) throw new MockitoException("..."); } }
上一个答案:
你是对的.verifyNoMoreInteractions是您所需要的.
verify(row).setSomething(value); verify(row).setSomethingElse(anotherValue); verify(row).editABunchMoreStuff(); verify(row).saveToDatabase(); verifyNoMoreInteractions(row);
Grofit.. 11
关于主题不是100%,但我只是想找到与验证相反的,这是唯一相关的结果,它最终我在Mockito.verifyZeroInteractions(mock)之后;
只是因为其他人最终在这里寻找这个......
我认为这需要更多的定制工作.
verify(row, new LastCall()).saveToDatabase();
然后
public class LastCall implements VerificationMode { public void verify(VerificationData data) { Listinvocations = data.getAllInvocations(); InvocationMatcher matcher = data.getWanted(); Invocation invocation = invocations.get(invocations.size() - 1); if (!matcher.matches(invocation)) throw new MockitoException("..."); } }
上一个答案:
你是对的.verifyNoMoreInteractions是您所需要的.
verify(row).setSomething(value); verify(row).setSomethingElse(anotherValue); verify(row).editABunchMoreStuff(); verify(row).saveToDatabase(); verifyNoMoreInteractions(row);
关于主题不是100%,但我只是想找到与验证相反的,这是唯一相关的结果,它最终我在Mockito.verifyZeroInteractions(mock)之后;
只是因为其他人最终在这里寻找这个......