Тестовый модуль контроллера не может автоматически подключать необходимые бины - PullRequest
0 голосов
/ 30 января 2019

Я пытаюсь написать модульный тест для пружинного контроллера, класс 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());

        }

    }

1 Ответ

0 голосов
/ 30 января 2019

Вы обновляете контроллер вручную с помощью new MyController() в методе setUp, поэтому зависимости не вводятся.

Создайте переменную типа контроллера

@InjectMocks
MyController myController;      

Использованиеэто при создании экземпляра mockMVC в вашем методе setUp, как показано ниже:

mockMvc = MockMvcBuilders.standaloneSetup(myController).build();

Это должно работать.

...