2013-10-16 39 views
3

我有這門課進行測試。該測試使用mockMvc對象。我認爲這個對象發送HTTP請求和這些請求處理控制器,它配置需要從pathToFile.xml如何使用MockMvc發送HTTP請求嘲笑控制器?

@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

這是真的嗎?

回答

0

CandidateController類創建candidateService二傳手。

在您的CandidateControllerTest中,從WebApplicationContext獲取CandidateController豆,並使用setter來設置模擬。

CandidateService candidateServiceMock = ...; // mock it 
CandidateController cc = (CandidateController) wac.getBean(CandidateController.class); 
cc.setCandidateService(candidateServiceMock); 

我不建議這樣做。如果你只是爲了測試自身的CandidateController,這將是罰款。但是,您正在測試集成測試MockMvc。模擬不屬於正在測試的堆棧。每次測試後

+0

CandidateService會復位? – homeAccount

+0

@homeAccount您可以選擇是否需要。嘲笑我可能會在每次測試後重置它。 –

+0

索蒂里奧斯Delimanolis,這是真的做出類似的伎倆型號,RedirecAttributes和ModelAttributes(春季作品)? – gstackoverflow