Junit 忽略方法模拟
Junit ignore method mocking
我在现有 class 中创建了一个 Junit 测试用例,我想忽略一些模拟
@InjectMock
private HomeService homeService;
@Mock
private HomeUtility homeUtility;
@Test
public void testIsFilterWorkedTrue() {
homeService.getData();
}
HomeService.java
class HomeService {
@Autowired
private HomeUtility homeUtility;
public [RETURN_TYPE] getData() {
// call mocked method
output = mockedMethodcall();
test = homeUtility.callMethod(output);
return test;
}
}
在上面的代码中,对于 homeUtility.callMethod(output);
,我不希望它被模拟,应该进入方法内部。我必须使用
@Mock
private HomeUtility homeUtility;
因为它也被用于其他方法。我怎么能忽略它
您可以使用 thenCallRealMethod
来确保为该对象调用实际方法。
@InjectMock
private HomeService homeService;
@Mock
private HomeUtility homeUtility;
@Test
public void testIsFilterWorkedTrue() {
when( homeUtility.callMethod(anyString()).thenCallRealMethod() )
homeService.getData();
}
您也可以为此使用 spy
。更多阅读:https://www.javabullets.com/mockito-partial-mocks-mock-and-spy/
我在现有 class 中创建了一个 Junit 测试用例,我想忽略一些模拟
@InjectMock
private HomeService homeService;
@Mock
private HomeUtility homeUtility;
@Test
public void testIsFilterWorkedTrue() {
homeService.getData();
}
HomeService.java
class HomeService {
@Autowired
private HomeUtility homeUtility;
public [RETURN_TYPE] getData() {
// call mocked method
output = mockedMethodcall();
test = homeUtility.callMethod(output);
return test;
}
}
在上面的代码中,对于 homeUtility.callMethod(output);
,我不希望它被模拟,应该进入方法内部。我必须使用
@Mock
private HomeUtility homeUtility;
因为它也被用于其他方法。我怎么能忽略它
您可以使用 thenCallRealMethod
来确保为该对象调用实际方法。
@InjectMock
private HomeService homeService;
@Mock
private HomeUtility homeUtility;
@Test
public void testIsFilterWorkedTrue() {
when( homeUtility.callMethod(anyString()).thenCallRealMethod() )
homeService.getData();
}
您也可以为此使用 spy
。更多阅读:https://www.javabullets.com/mockito-partial-mocks-mock-and-spy/