java - Junit忽略方法模拟
问题描述
我在现有类中创建了一个 Junit 测试用例,我想忽略一些模拟
@InjectMock
private HomeService homeService;
@Mock
private HomeUtility homeUtility;
@Test
public void testIsFilterWorkedTrue() {
homeService.getData();
}
家庭服务.java
class HomeService {
@Autowired
private HomeUtility homeUtility;
public [RETURN_TYPE] getData() {
// call mocked method
output = mockedMethodcall();
test = homeUtility.callMethod(output);
return test;
}
}
在上面的代码中, for 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/
推荐阅读
- javascript - 如何在bixby中用'替换'
- c# - 如何用字符串更新 DataTable 的特定列字段值?
- r - R raster::extract 无法创建 data.frame
- php - 使用 Ajax 和 Codeigniter 的 DataTable 问题
- java - 是否可以在布局中混合使用“SurfaceView”和另一个“View”?
- javascript - 如何检索存储在 Firebase 数据库中的 URL,然后填充图像标签的 src?
- flutter - Flutter ScrollPhysics.shouldAcceptUserOffset 对滚动行为没有影响
- wordpress - WordPress - 在登录时将非管理员重定向到主页
- flutter - 圆形图像文件
- java - 响应中的 Access-Control-Allow-Origin' 标头不能是通配符 '*'