"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;
}