测试返回true,而它应该返回false,反之亦然

时间:2017-08-18 17:42:46

标签: java spring spring-mvc spring-boot mockito

继续我的帖子How to properly test a Spring Boot using Mockito。还有另一个问题。

嗯,这个方法

@GetMapping("/checkUsernameAtRegistering")
public HttpEntity<Boolean> checkUsernameAtRegistering(@RequestParam String username) {
        return ResponseEntity.ok().body(!userService.existsByUsername(username));
}

收到用户名并签入数据库后,如果用户名存在,则返回false。 但是,测试

@Test
public void textExistsUsername() throws Exception {
    mockMvc
            .perform(get("/checkUserData/checkUsername")
            .param("username", "jonki97"))
            .andExpect(status().isOk())
            .andExpect(content().string("false"));
}

返回true。我有一个用户名,该方法应该返回false。但事实并非如此。

java.lang.AssertionError: Response content 
Expected :false
Actual   :true

我认为我理解语法

.andExpect(content().string("false"));

我期待一串虚假的价值。如何告诉服务返回什么?

1 个答案:

答案 0 :(得分:-1)

您可以使用Mockito when模拟服务的回报。

@Test
public void textExistsUsername() throws Exception {
    when(userService.existsByUsername("jonki97")).thenReturn(true);
    mockMvc
            .perform(get("/checkUserData/checkUsername")
            .param("username", "jonki97"))
            .andExpect(status().isOk())
            .andExpect(content().string("false"));
}