簡體   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