【发布时间】:2016-11-03 19:53:33
【问题描述】:
我正在使用Mockito 在我的 Java 代码中编写一些测试。在我的测试中,我有一个真实的对象,但我想模拟其中一种方法中发生的事情并能够访问方法参数。
如果我这样做:
MyObj spyObj = spy(new MyObj());
doReturn(false).when(spyObj).myMethod(anyObject(), anyObject(), anyList(), anyLong());
我无法访问参数并对其进行任何类型的逻辑处理。
但是,如果我像这样使用Mockito.when():
when(spyObj.myMethod(anyObject(), anyObject(), anyList(), anyLong())).thenAnswer(invocation -> {
if (invocation.getArguments()[0] == 1) {
// do stuff
return true;
}
return false;
});
真正的方法运行而不是模拟的方法。我怎样才能让我的测试运行我的模拟方法并能够访问模拟方法中的参数?谢谢!
【问题讨论】:
-
没有广泛使用 Mocikto,但也许这会有所帮助:site.mockito.org/mockito/docs/current/org/mockito/… 和这里的一些东西:vogella.com/tutorials/Mockito/article.html#mockito_spy
-
使用doAnswer().when(),就像你使用doReturn().when()一样。见site.mockito.org/mockito/docs/current/org/mockito/…。
标签: java unit-testing mockito