如何使用 Mockito 和 JUnit 在 Spring Boot 中测试 POST 方法

新手上路,请多包涵

我是在 Spring Boot 框架中使用 JUnit 和 Mockito 进行单元测试的新手。我想测试这个方法。如何测试 POST 请求方法:

 // add Employee
@RequestMapping(method = RequestMethod.POST)
public void addEmployee(@RequestBody Employee employee){
    this.employeeService.addEmployee(employee);
}

先感谢您

原文由 sk555 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 914
1 个回答

正如@merve-sahin 正确指出的那样,您可以使用@WebMvcTest 来实现这一点。

看下面的例子:

 @RunWith(SpringRunner.class)
@WebMvcTest(YourController.class)
public class YourControllerTest {

    @Autowired MockMvc mvc;
    @MockBean EmployeeService employeeService;

    @Test
    public void addEmployeeTest() throws Exception {

        Employee emp = createEmployee();

        mvc.perform(post("/api/employee")
            .contentType(MediaType.APPLICATION_JSON)
            .content(toJson(emp)))
            .andExpect(status().isOk());
    }
}

在上面的代码中,您可以使用@MockBean 模拟您的依赖服务。该测试将在您的自定义 Employee 对象上执行发布并验证响应

您可以在调用执行时添加标题,授权

假设您使用 JSON 作为媒体类型,您可以使用任何 json 库编写 toJson() 方法将 Employee 对象转换为 Json 字符串格式

private String toJson(Employee emp) {

如果您使用的是 XML,那么您可以对 XML 执行相同的操作

您可以使用期望以链式方式验证响应。正如正确指出的那样,请查看 MockedMvc 链接,该链接应该对您有所帮助

原文由 Ashish Mishra 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进