Мое приложение сериализует различные модели и отправляет их через HTTP-запросы третьей стороне.
Я бы хотел десериализовать тело запроса в ту или иную модель в зависимости от интеграционного теста, а затем утверждать его. Похоже, что некоторые люди могут реализовать свои собственные RequestMatcher
или просто утверждать против строки, но обе эти опции кажутся грязными. Если бы я реализовал свой собственный RequestMatcher
, мне бы пришлось реализовать разные RequestMatcher
для каждой модели, которой могло бы быть тело (и их много).
Было бы неплохо, если бы я мог просто десериализовать json в теле запроса и делайте то, что я хочу, за пределами декларативного соответствия.
Примерно так:
BodyCaptor captor = new BodyCaptor(); // I made this up
MockRestServiceServer mockServer = MockRestServiceServer.bindTo(restTemplate).ignoreExpectOrder(true).build();
mockServer
.expect(MockRestRequestMatchers.requestTo(testBaseUri + testApiPath))
.andExpect(method(HttpMethod.POST))
.andExpect(content().contentType(MediaType.APPLICATION_JSON))
.andCaptureBody(captor)
.andRespond(MockRestResponseCreators.withSuccess());
MyModel mymodel = objectMapper.deserialize(captor.getValue())
assertThat(mymodel.getWhateverProperty()).isEqualTo(5)
....
Возможно ли что-то подобное? Какие у меня варианты?