如何正确使用测试一个的Mockito春季启动(How to properly test a Spri

2019-10-30 11:45发布

我从来没有做了一个测试,并决定我会做我的第一次。 我使用Spring启动,并且默认布局如下: 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

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

Answer 1:

错误404意味着,素不认识你的端点进行测试。 终点应该是:

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

希望这有助于。



文章来源: How to properly test a Spring Boot using Mockito