繁体   English   中英

如何使用Mockito正确测试Spring Boot

[英]How to properly test a Spring Boot using Mockito

我从未做过测试,因此决定要做我的第一件事。 我使用的是Spring Boot,默认情况下布局如下: https : //zapodaj.net/c8b65f1644e95.png.html启动时创建的文件如下所示

@RunWith(SpringRunner.class)
@SpringBootTest
public class RestWebServicesApplicationTests {

    @Test
    public void contextLoads() {
    }

}

在这里,我不需要任何更改,因为我不需要它。 相比之下,我创建了一个新类

public class CheckUserDataRestControllerTest {

    @Mock
    private UserService userService;

    @InjectMocks
    private CheckUserDataRestController checkUserDataRestController;

    private MockMvc mockMvc;

    @Before
    public void setup() {
        MockitoAnnotations.initMocks(this);

        mockMvc = MockMvcBuilders.standaloneSetup(checkUserDataRestController).build();
    }

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

要测试控制器方法,应返回状态OK。

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

但是,在测试过程中,他把我扔了出去

java.lang.AssertionError: Status 
Expected :200
Actual   :404
 <Click to see difference>

    at org.springframework.test.util.AssertionErrors.fail(AssertionErrors.java:54)
        ...

这是经过测试的控制器: https : //pastebin.com/MWW9YwiH

我没有做任何特殊的配置,因为我没有发现我需要做一些事情。

错误404表示模拟无法识别您要测试的端点。 终点应该是:

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

希望对您有所帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM