java单元测试服务类,带有使用TestNG的模拟
我正在尝试为一个通用服务类编写一个单元测试,如下所示:
public class ApiService{
private RestTemplate restTemplate;
private ServiceDao serviceDao;
@Autowired
public ApiService(RestTemplate restTemplate, ServiceDao serviceDao) {
this.restTemplate = restTemplate;
this.serviceDao = serviceDao;
}
public ResponseEntity getObject(ObjectRequest request) {
// Service logic here
}
public ResponseEntity postObject(CreateObjectRequest request) {
// Service logic here
}
}
但是我正在努力研究如何在我的服务类的构造函数中模拟restTemplate,这样当测试运行时,数据就不会被持久化。。我已经研究了Mockito,但是在这个上下文中没有看到很多关于Mockito+TestNG的示例或文档。任何帮助都将不胜感激
# 1 楼答案
我已经用Mockito构造了一个方法如下。。。可能有一个更优雅的解决方案,所以我有兴趣看看:
# 2 楼答案
首先——如果可能的话,在服务中注入RestOperations,而不是RestTemplate。然后,您将能够轻松地模拟其行为(注意:RestTemplate实现RestOperations)
如果无法使用RestOperations,可以执行以下操作: