在webTestClient实体创建测试期间,JSON路径无值

时间:2019-04-18 09:07:44

标签: java unit-testing spring-boot reactive-programming spring-test

“固定” : 我的端点返回的是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;
}

0 个答案:

没有答案