“固定” : 我的端点返回的是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)不起作用。
期望状态对我来说是正确的(应该是Create,但这不是问题)
删除$。也没用
终点:
@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;
}