所以我一直在对服务器进行一些测试,但我不断收到此错误 “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));
}
您是否(不知不觉地)遵守了某个标准,例如包含一些样板的Google 的 JSON 样式指南?
查看原始响应,因为它可能打印在某处。你可能需要
.andExpect(jsonPath("$.data.items[0].id", is(1)))