doReturn的行为 - when和when-then返回与mocked和spied对象

时间:2018-04-23 10:06:41

标签: unit-testing junit mockito powermockito

当使用间谍对象作为测试主题时,如果我们不想在我们正在测试的方法中调用嵌套方法,那么这些方法中的哪一个(doReturn-when或when-thenReturn)可以是用来模拟那些嵌套方法? 有没有办法避免调用我们要测试的方法中的真实方法?

1 个答案:

答案 0 :(得分:0)

实际上,对于这种特定情况,如果使用doReturn-when或when-thenReturn方法并不重要,因为考虑@Spy,您将始终调用实际方法。

你可以通过模拟它们来避免输入其他方法,但是如果你只使用Mockito它将是一个问题(它没有这种方法,但是PowerMock会这样做)。特别是我不同意这种方法,因为我们在测试中过于侵入,私有流是整个流程的一部分,但你可以这样做:

SomeService mock = spy(SomeService.class);

doReturn(1).when(mock, "getNumber", ArgumentMatchers.anyInt());

有关详细信息,您可以验证PowerMock's official documentation。另外,很高兴知道some basic unit testing concepts (stubs, mocks and so on)