[英]How to send http request to mocked controller using MockMvc?
我有这个课程进行测试。 此测试使用mockMvc对象。 我认为这个对象发送http请求,这些请求处理控制器从pathToFile.xml
获取配置
@ContextConfiguration(locations = { "classpath:/pathToFile.xml" })
@WebAppConfiguration
@RunWith(SpringJUnit4ClassRunner.class)
public class CandidateControllerTest {
@Autowired
WebApplicationContext wac;
MockMvc mockMvc;
@Before
public void before() {
mockMvc = MockMvcBuilders.webApplicationContextSetup(wac).build();
}
...
}
我想有时我想用其他配置控制器。
这是什么意思?
CandidateControllerTest
测试CandidateController
类的方法
@Controller
CandidateController{
@Autowire
CandidateService candidateService;
@RequestMapping("/path")
public string handleSomething(Model model){
...
candidateService.doSomething();
...
return "viewName"
}
}
我想嘲笑candidateService
的发送HTTP请求与嘲笑到控制器candidateService
真的吗?
在CandidateController
类中为candidateService
创建一个setter。
在CandidateControllerTest
,从WebApplicationContext
获取CandidateController
bean并使用setter设置mock。
CandidateService candidateServiceMock = ...; // mock it
CandidateController cc = (CandidateController) wac.getBean(CandidateController.class);
cc.setCandidateService(candidateServiceMock);
我不推荐这个。 如果你只是测试CandidateController
就其本身而言,这将是罚款。 但是你正在MockMvc
背后进行测试,这是集成测试。 模拟不属于正在测试的堆栈。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.