由于我是Mockito的新手,我想知道,如何在类中模拟一个方法,实际上也用@Mock
注释。
示例:
@RunWith(MockitoJUnitRunner.class)
public class someServiceTest {
@InjectMocks
private MainService mainService;
@Mock
private HelpService helpService;
@Mock
private SecondHelpService secondHelpService;
现在有一个helpService
类,其中包含一个方法,用于测试MainService
。
@Service
@Transactional(propagation = Propagation.SUPPORTS)
public class HelpService {
// I want this method to be mocked
private boolean checkSomething(String name, date) {
return ProcessService.checkIfJobHasRun(name, date);
}
我也尝试在@InjectMocks
使用HelpService
,在ProcessService
中添加@Mock
someServiceTest
,但Mockito不允许这样做。结果,它引发了我NullPointerException
。我该如何解决这个问题?
答案 0 :(得分:0)
@InjectMocks
只应在被测试的课程中使用。将依赖项注入到模拟中是没有意义的,因为它们没有任何实现。
如果您可以公开该方法,可以按如下方式进行模拟:
doReturn(true).when(helpService)
.checkSomething(Mockito.any(String.class), Mockito.any(Date.class));