симулированный клиент работает с контрактами, но не с фактическим ресурсом API
У меня симулированный клиент с интеграционными тестами по контракту.все работает нормально, но при переходе к сквозным тестам симулированный клиент продолжает получать код состояния 406.Как это могло случиться?
Ресурс API (очень стандартный API в контроллере):
@RestController
@RequestMapping(value = "/")
public class DateController {
@GetMapping(path = "/somepath", produces = "text/plain")
public ResponseEntity<String> getDateAsString(){
return ResponseEntity.status(HttpStatus.OK).body("20190909");
}
Контракт:
request {
method GET()
urlPath ($(consumer('/somepath'),
producer('/somepath'))) {
}
# is below normal based on the controller API definition?
headers {accept(textPlain())}
}
response {
status 200
headers {contentType(textPlain())}
body("20190909")
}
симулировать клиента (должен "производить = ..." в симуляцииклиент?):
public interface DateClient {
@GetMapping(path = "/somepath", produces = "text/plain")
String getDateAsString();
}
вот тест интеграции симулированного клиента
public class DateClientTest {
@Autowired
private DateClient dateClient;
@Test
public void getDate() throws Exception {
String date = dateClient.getDateAsString();
assertThat(date).isEqualTo("20190909");
}
Поскольку симметричный клиент отлично работает с контрактом, я ожидаю того же поведения с реальным ресурсом API.к сожалению, в реальной среде я получил 406 код состояния от зависимого микросервиса.
Может кто-нибудь помочь, если что-то не так с контрактом или симулировать клиента?
В качестве эксперимента я удалил "Производит = ... "в симулированном клиенте, как показано ниже (это должно быть правильно симулировать клиента?).Теперь фактическая среда работает нормально, но это не работает с контрактом.
@GetMapping(path = "/somepath")
String getDateAsString();
здесь информация о версии:
springboot version: 1.5.3.RELEASE
spring cloud version: Dalston.RELEASE
spring-cloud-contract version: 1.2.1.RELEASE
это простой запрос Get, если использовать команду curl для моего микросервиса:
curl -v "http://localhost:8090/somepath"
и ниже - регистрация ошибок от симулированного клиента:
message="Feign client received an unsuccessful response.", status="406", reason="Not Acceptable"
path="/somepath"
нет потребителя (я пропустил один параметр запроса "? Id = {id}"