java.lang.AssertionError:JSON 路径“$.id”没有值

问题描述 投票:0回答:1

所以我一直在对服务器进行一些测试,但我不断收到此错误 “java.lang.AssertionError:JSON 路径“$.id”没有值

这是我使用过的代码。不知道为什么它没有正确读取 jSon,因为它不会对编写的所有其他代码执行此操作。

@Test
    public void registerSuccessful() throws Exception {
        User testUser1 = new User("test.com", "password", "John", "Doe", "JDoe");
        testUser1.setId(1);
        given(authService.register(testUser1)).willReturn(testUser1);

        String requestBody = objectMapper.writeValueAsString(testUser1);
        this.mockMvc.perform(post("/auth/register")
                        .contentType(MediaType.APPLICATION_JSON)
                        .content(requestBody))
                .andExpect(status().is(201)).andDo(print())
                .andExpect(MockMvcResultMatchers.jsonPath("$.id", is(1)))
                .andExpect(jsonPath("$.email", is("test.com")))
                .andExpect(jsonPath("$.password", is(testUser1.getPassword())))
                .andExpect(jsonPath("$.firstName", is(testUser1.getFirstName())))
                .andExpect(jsonPath("$.lastName", is(testUser1.getLastName())))
                .andExpect(jsonPath("$.username", is(testUser1.getUsername())))
                .andExpect(jsonPath("$.imageUrl", is(testUser1.getImageUrl())));
    }

这是AuthController

 @PostMapping("/register")
    public ResponseEntity<User> register(@RequestBody RegisterRequest registerRequest) {
        User created = new User(
                registerRequest.getEmail(),
                registerRequest.getPassword(),
                registerRequest.getFirstName(),
                registerRequest.getLastName(),
                registerRequest.getUsername());

        return ResponseEntity.status(HttpStatus.CREATED).body(authService.register(created));
    }
java json junit mockito mockmvc
1个回答
0
投票

您是否(不知不觉地)遵守了某个标准,例如包含一些样板的Google 的 JSON 样式指南

查看原始响应,因为它可能打印在某处。你可能需要

.andExpect(jsonPath("$.data.items[0].id", is(1)))
© www.soinside.com 2019 - 2024. All rights reserved.