簡體   English   中英

控制器單元測試無法自動連線所需的bean

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM