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