我在 Spring Boot Maven 中进行了一些 Cucumber 测试(给出、何时、然后是集成测试),并且我能够使用 TestRestTemplate 测试我的端点,但前提是外部服务正在运行。
外部服务的工作是在我将信息保存到数据库之前检查一些字段。
正常运行应用程序时,外部服务由 FeignClient 调用。
使用 TestRestTemplate 测试端点时是否可以模拟外部服务?
编辑:
结构示例模型
控制器.java
@Autowired
EmployeeSvc employeeSvc;
@PostMapping(/save)
public ResponseEntity<String> saveEmployee(@RequestBody EmployeeDTO employeeDTO) {
employeeSvc.save(employeeDTO);
}
EmployeeSvc.java
@Autowired
ExternalSvcClient externalSvcClient; //External service is called by feignclient here.
@Autowired
EmployeeRepository employeeRepository;
public void save(EmployeeDTO employeeDTO) {
externalSvcClient.check(employeeDTO);
...some other code
Employee employee = dtoTransformer.transoform(employeeDTO);
employeeRepository.save(employee);
}
好的,我按照this设法使用wiremock进行测试。
对于存根,请确保不要在路径中包含参数:
如果您的请求网址如下所示
myrequest/?value1=someValue
在存根中将其设置为这样,并将参数附加到其余模板上,否则它将无法工作
myrequest/
restTemplate.getForEntity(url+"value1=someValue"....)