【发布时间】:2018-04-29 20:51:36
【问题描述】:
我正在寻找如何在单个构造函数中注入 bean 和模拟的方法。
@Service
public class SomeService {
private EndpointUrlProvider endpointUrlProvider;
private RestTemplate restTemplate;
@Autowired
public SomeService(EndpointUrlProvider endpointUrlProvider, RestTemplate restTemplate){
this.endpointUrlProvider = endpointUrlProvider;
this.restTemplate = restTemplate;
}
测试:
class SomeTest extends Specification {
@Autowired
EndpointUrlProvider endpointUrlProvider
RestTemplate restTemplate = Mock {
postForEntity(_, _, SomeResponse.class) >> new ResponseEntity(new SomeResponse(), HttpStatus.OK)
}
SomeService someService = new SomeService(endpointUrlProvider, restTemplate)
//some tests
}
当我在 someService 中进行测试时,我的 endpointUrlProvider 为空。我做错了什么?对此进行测试的最佳方法是什么?
【问题讨论】:
-
EndpointUrlProvider也应该是模拟的还是真正的 bean?
标签: java spring unit-testing dependency-injection spock