繁体   English   中英

如何使用MockMvc向被模拟的控制器发送http请求?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM