java - 如何使用 Mockito 和 JUnit 在 Spring Boot 中测试 DELETE 方法
问题描述
在 Spring Boot 框架中,我发现使用 JUnit 和 Mockito 进行控制器单元测试存在困难。我想测试这个方法。如何测试 DELETE 请求方法:
// 删除应用 控制器类
@DeleteMapping("/applications")
public String deleteApplicationByObject(@RequestBody Application application) {
applicationService.deleteById(application.getId());
return "Deleted";
}
// 删除应用 服务类
@Override
@Transactional
public String removeById(Long id) {
dao.deleteById(id);
return "SUCCESS";
}
// 删除应用程序 Dao 类
@Override
public void deleteById(Long id) {
Application application = findById(id);
em.remove(application);
}
先感谢您。
解决方案
过了一会儿,我能够找到我的问题的解决方案,
ApplicationControllerTest.class
package com.spring.addapplication.test.controller;
import static org.mockito.MockitoAnnotations.initMocks;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.content;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import java.util.ArrayList;
import java.util.List;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.spring.addapplication.controller.ApplicationController;
import com.spring.addapplication.model.Application;
import com.spring.addapplication.service.ApplicationService;
import com.spring.addapplication.url.UrlChecker;
@RunWith(SpringJUnit4ClassRunner.class)
public class ApplicationControllerTest {
@Mock
ApplicationService applicationService;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
initMocks(this);// this is needed for inititalization of mocks, if you use @Mock
ApplicationController controller = new ApplicationController(applicationService,urlChecker);
mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
}
@Test
public void deleteApplication() throws Exception {
Mockito.when(applicationService.removeById(10001L)).thenReturn("SUCCESS");
mockMvc.perform(MockMvcRequestBuilders.delete("/applications", 10001L))
.andExpect(status().isOk());
}
推荐阅读
- c++ - 对于单元测试,是否有一种骇人听闻的方法来更改 const 变量的值?
- c# - 统一。帮助。为敌人创建了一条裙子,它挂在上面的所有物体的 hp 都会减少
- laravel - 目前cubic_meter 列是字符串。必须将类型转换为双精度。(拉拉维尔)
- c# - 无法在 Mac 上使用 System.Drawing.Bitmap:System.PlatformNotSupportedException
- python - 如何在python中用“”分割
- asp.net-core - 什么是 ASP.NET Core 5 中的 Web 窗体“Page_Load”的等价物,所以我的代码将在任何页面加载之前运行?
- c# - Onvif PTZControl 故障
- prefect - 如何永久设置本地 Prefect 配置文件?
- curl - 如何解决清漆清除器在 1000 毫秒后超时,收到 0 个字节中的 0 个字节并出现 cURL 错误 28
- python - 遍历 Pandas Dataframe 中定义的日期时间索引范围