У меня есть API, который обслуживает ответы как Flux
и Mono
, которые, в свою очередь, предоставляют полезную нагрузку JSON в качестве события отправки сервера.
Я также использую Spring RestDocs
для документирования содержимого этой полезной нагрузки. Они генерируются в WebFluxTest
и
Я могу сгенерировать простой фрагмент ResponseBody, используя PayloadDocumentation.responseBody()
, но когда я пытаюсь описать поля с помощью дескрипторов полей...
@WebFluxTest
@AutoConfigureRestDocs
@ContextConfiguration(classes = ArticleHandler.class)
class HandlerTest {
...
@Test
void testGetArticle() {
webClient.get()
.uri("/articles/{id}", "article-id")
.exchange()
.expectStatus().isOk().expectBody().consumeWith(
document("article", PayloadDocumentation.responseFields(fieldWithPath("id")
.type(JsonFieldType.STRING)
.description("Unique ID for blog article")));
}
}
Я получаю следующий неудачный тест:
[Fatal Error] :1:1: Content is not allowed in prolog.
Cannot handle text/event-stream;charset=UTF-8 content as it could not be parsed as JSON or XML
org.springframework.restdocs.payload.PayloadHandlingException: Cannot handle text/event-stream;charset=UTF-8 content as it could not be parsed as JSON or XML
at org.springframework.restdocs.payload.ContentHandler.forContentWithDescriptors(ContentHandler.java:69)
at org.springframework.restdocs.payload.AbstractFieldsSnippet.createModel(AbstractFieldsSnippet.java:157)
at org.springframework.restdocs.snippet.TemplatedSnippet.document(TemplatedSnippet.java:78)
at org.springframework.restdocs.generate.RestDocumentationGenerator.handle(RestDocumentationGenerator.java:191)
at org.springframework.restdocs.webtestclient.WebTestClientRestDocumentation.lambda$document$0(WebTestClientRestDocumentation.java:77)
at org.springframework.test.web.reactive.server.DefaultWebTestClient$DefaultBodyContentSpec.lambda$consumeWith$3(DefaultWebTestClient.java:564)
at org.springframework.test.web.reactive.server.ExchangeResult.assertWithDiagnostics(ExchangeResult.java:206)
at org.springframework.test.web.reactive.server.DefaultWebTestClient$DefaultBodyContentSpec.consumeWith(DefaultWebTestClient.java:564)
at com.project.blog.article.HandlerTest.testGetArticle(HandlerTest.java:62)
Есть ли способ документировать объекты, испускаемые моей полезной нагрузкой text/event-stream
?
.type(JsonFieldType.STRING)
? - person Marc   schedule 12.09.2020