Нет значения по пути JSON во время теста создания сущности webTestClient - PullRequest
2 голосов
/ 18 апреля 2019

"Fixed" : Моя конечная точка возвращала void вместо User, поэтому она не могла получить значения.

Я делаю тесты, используя webTestClient для своего приложения, а тест POST не имеет значения в JSON.

Код:

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

    @Autowired
    private WebTestClient webTestClient;

    @Test
    public void testCreateUser() {
        User user = new User(1L, "Slavik", 19);

        webTestClient.post()
                .uri("/api/user/")
                .contentType(APPLICATION_JSON_UTF8)
                .accept(APPLICATION_JSON_UTF8)
                .body(Mono.just(user), User.class)
                .exchange()
                .expectStatus().isOk()
                .expectBody()
                .jsonPath("$.id").isNotEmpty()
                .jsonPath("$.username").isEqualTo("Slavik");
    }

    @Test
    public void getAllOkForGetAll() {
        webTestClient.get()
                .uri("/api/user/")
                .accept(APPLICATION_JSON_UTF8)
                .exchange()
                .expectStatus().isOk()
                .expectHeader().contentType(APPLICATION_JSON_UTF8)
                .expectBodyList(User.class);
    }
}

Метод GET работает.

Удаление обеих строк JSON приводит к прохождению теста.

.expectBody (User.class) не работает.

Ожидается, что статус OK правильный для моего случая (должно быть «Создать», но это не проблема)

Удаление $. тоже не работал

Конечная точка:

    @PostMapping
    @ResponseStatus(value = HttpStatus.OK)
    public void add() {
        this.userService.add();
    }

Класс пользователя:

@Builder
@Data
@NoArgsConstructor
@AllArgsConstructor
public class User {
    private Long id;
    private String username;
    private Integer age;
}
...