1
我正在測試我的Spring @RestController使用獨立的設置,並嘲笑一些使用mockito自動佈線的bean,到目前爲止我所有的測試都已成功,直到我嘗試測試這個restservice:使用SpringFramework測試和Mockito HttpServletResponse響應上的空指針
@RequestMapping(value = "/some/{someId}/other/someagain", method = RequestMethod.POST)
public FileSystemResource downloadInvoiceQuery(@PathVariable Long someId,
@RequestBody SomeClass request, HttpServletResponse response) {
.
.
.
mockedBean.method("object1","object2");
response.setHeader("some headers");
}
使用此測試:
when(mockedBean.method(any(), any())).thenReturn(null);
mockMvc.perform(MockMvcRequestBuilders.post("/some/{someId}/other/someagain", 1L)
.contentType(MediaType.APPLICATION_JSON).content("{}")).andExpect(MockMvcResultMatchers.status().isOk());
我得到一個空指針時setHeaders方法被調用了在控制器HttpServletResponse對象。我不知道如何注入或傳遞該響應對象以避免空指針。謝謝你的幫助。
您是不使用獨立安裝:MockMvcBuilders.webAppContextSetup,但可能使用此設置我將避免響應空指針。 – xiidarkevil
正確 - 感謝提示 - 但在這兩種變體應該做的情況下 - 建立一個獨立的上下文是這樣完成的'this.mockMvc = MockMvcBuilders.standaloneSetup(new AccountController())。build();' –
我有我的配置正確地設置爲獨立的方式,我的控制器公開了很多網址,並且我以成功的方式測試了它們,但是我顯示的方法是唯一一個響應對象中的空指針失敗的方法。 – xiidarkevil