[英]Controller Unit test not able to autowire required beans
我正在嘗試為spring控制器編寫單元測試, myService類在myController中是自動裝配的,我已經模擬了 myService類,但是當我調試代碼時它將變為 null
myService = null
我無法為我的控制器注入此服務。
@RunWith(MockitoJUnitRunner.class)
public class TestManageDevices {
private MockMvc mockMvc;
@Mock
MyService myService;
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(new MyController())
.build();
}
@Test
public void shouldPass() throws Exception {
Mockito.doNothing().when(myService).someMethod(Mockito.anyString(), Mockito.anyString(), Mockito.anyString());
JobResponse jobResponse = JobResponse.builder().responseCode(0).build();
jobResponse.requestObj = "mockedStringObject";
RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/pathfortest")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.param("id", Mockito.anyString());
MvcResult result = mockMvc.perform(requestBuilder).andReturn();
System.out.println(result.getResponse().getContentAsString());
MockHttpServletResponse response = result.getResponse();
Assert.assertEquals(HttpStatus.CREATED.value(), response.getStatus());
}
}
您將使用setUp
方法中的new MyController()
手動更新控制器,因此不會注入依賴項。
創建一個類型控制器的變量
@InjectMocks
MyController myController;
在如下的setUp
方法中創建mockMVC
實例時,請使用此方法:
mockMvc = MockMvcBuilders.standaloneSetup(myController).build();
這應該工作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.