【问题标题】:java.lang.AssertionError: Status Expected :200 Actual :400java.lang.AssertionError:预期状态:200 实际:400
【发布时间】:2021-08-05 20:55:17
【问题描述】:

我有一个具有以下端点的身份验证控制器

   @PostMapping("/register")
   fun register(@RequestBody body: RegisterDto): ResponseEntity<User> {
     val user = User()
     user.name = body.name
     user.email = body.email
     user.password = body.password
     return ResponseEntity.status(201).body(userService.saveUser(user))
  }

现在我已经为上面的 sn-p 编写了一个测试用例,如下所示

  fun `register user with valid input, returns ok`() {
    val result = mockMvc.perform(MockMvcRequestBuilders.post("/api/auth/register")
        .param("id","1")
        .param("name","Homer")
        .param("email","homer@simpsons.com")
        .param("password","123456")
        .contentType(MediaType.APPLICATION_JSON)
        .accept(MediaType.APPLICATION_JSON))
    result.andExpect(MockMvcResultMatchers.status().isOk)
}

跑步时,我得到 400,我需要得到 200(成功)。我对弹簧靴的测试很陌生。我可能做错了什么或错过了什么?万斯感谢

【问题讨论】:

    标签: spring-boot kotlin spring-boot-test


    【解决方案1】:

    您正在设置参数。实际上,您需要传递一个 JSON 正文,如下所示:

    fun `register user with valid input, returns ok` () {
      val user = User()
      user.id = 1
      user.name = "Homer"
      user.email = "homer@simpsons.com"
      user.password = "123456"
    
      var response = new ObjectMapper().writeValueAsString(user)
      val result = mockMvc.perform(MockMvcRequestBuilders.post("/api/auth/register")
        .contentType(MediaType.APPLICATION_JSON)
        .content(response)
        .accept(MediaType.APPLICATION_JSON))
      result.andExpect(MockMvcResultMatchers.status().isCreated)
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-25
      • 1970-01-01
      • 2018-10-23
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 2019-02-26
      相关资源
      最近更新 更多