之前在做业务层和控制层测试的时候,觉得控制层会调用到业务层的代码,这样等于对业务层进行了两次测试。而且修改了底层或业务层代码会影响到控制层的正常测试。于是想能不能用Mockito将业务层进行mock,从而不会影响到控制层的测试。
public class CompanyController {
@Autowired
private CompanyService companyServiceImpl;
public CompanyDO find(){
}
}
测试类
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;
import org.mockito.Mock;
import static org.mockito.Mockito.when;
public class test{
@Autowired
private WebApplicationContext webApplicationContext;
private MockMvc mockMvc;
mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();
@Mock
private CompanyService mockService;
private CompanyController mockController;
MockitoAnnotations.initMocks(mockCompanyLanguageService);
@Test
public void find() {
when(mockService.find()).

本文介绍了如何使用MockMvc和Mockito进行Spring Boot控制层接口测试,避免业务层影响控制层测试。通过手动注入Mockito模拟的业务层服务或者利用ReflectionTestUtils.setField()实现注入,并提供了测试完成后恢复正常服务的方法。此外,还展示了如何创建一个抽象测试类MockitoControllerTest,简化后续测试类的编写,提高测试效率。
最低0.47元/天 解锁文章
747





