尚未存根的方法的默认返回值是
false布尔方法,对于返回集合或映射的方法为空集合或映射
null。
这也适用于中的方法调用
when(...)。在您的示例中,
when(myService.getListWithData(inputData).get())将导致NullPointerException,因为它
myService.getListWithData(inputData)是
null-之前尚未存根。
一种选择是为所有中间返回值创建模拟,并在使用前将其存根。例如:
ListWithData listWithData = mock(ListWithData.class);when(listWithData.get()).thenReturn(item1);when(myService.getListWithData()).thenReturn(listWithData);
或者,您可以在创建模拟时指定其他默认答案,以使方法返回新的模拟,而不是null:
RETURNS_DEEP_STUBS
SomeService myService = mock(SomeService.class, Mockito.RETURNS_DEEP_STUBS);when(myService.getListWithData().get()).thenReturn(item1);
您应该阅读Mockito.RETURNS_DEEP_STUBS的Javadoc,它会对此进行更详细的说明,并带有一些有关其用法的警告。
我希望这有帮助。请注意,您的示例代码似乎还有更多问题,例如缺少断言或验证语句以及在模拟上调用setter(这没有任何作用)。



