Тестируемый сервер отправил событие с помощью Rest Assured Framework - PullRequest
0 голосов
/ 14 июня 2019

Я использую весеннюю загрузку и буду уверен, чтобы проверить мои REST-сервисы

У меня есть контроллер покоя, например

@GetMapping(produces = MediaType.TEXT_EVENT_STREAM_VALUE)
Flux<String> getFlux() {
...

Как правильно утверждать на теле ответа?

Я думаю, что значение возвращается как "data:" для потока, который заканчивается после одного вывода.

Я также не знаю, как проверить работоспособность потока при попытке асинхронного воздействия на данные?

1 Ответ

0 голосов
/ 14 июня 2019

Реактивное тестирование

Вам следует использовать WebTestClient для тестирования ваших реактивных сервисов.

Вот пример

Способ обслуживания:

public Flux<GithubRepo> listGithubRepositories(String username, String token) {
     return webClient.get()
            .uri("/user/repos")
            .header("Authorization", "Basic " + Base64Utils
                    .encodeToString((username + ":" + token).getBytes(UTF_8)))
            .retrieve()
            .bodyToFlux(GithubRepo.class);
}

Тест:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class WebclientDemoApplicationTests {

    @Autowired
    private WebTestClient webTestClient;

     @Test
    public void test2GetAllGithubRepositories() {
        webTestClient.get().uri("/api/repos")
                .accept(MediaType.APPLICATION_JSON_UTF8)
                .exchange()
                .expectStatus().isOk()
                .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)
                .expectBodyList(GithubRepo.class);
    }

}

Здесь вы найдете примеры https://www.callicoder.com/spring-5-reactive-webclient-webtestclient-examples/

Стандартное тестирование MVC

MockMVC

Вы можете использовать фиктивную среду, в которой классы контроллеров тестируются без реального запуска контейнера сервлета:

@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class MockMvcExampleTests {

    @Autowired
    private MockMvc mvc;

    @Test
    public void exampleTest() throws Exception {
        this.mvc.perform(get("/")).andExpect(status().isOk())
                .andExpect(content().string("Hello World"));
    }

}

При работающем сервере:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.RANDOM_PORT)
public class RandomPortTestRestTemplateExampleTests {

    @Autowired
    private TestRestTemplate restTemplate;

    @Test
    public void exampleTest() {
        String body = this.restTemplate.getForObject("/", String.class);
        assertThat(body).isEqualTo("Hello World");
    }

}

Подробнее о Spring Boot Testing читайте в официальной документации

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#boot-features-testing

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...