Уровень сервиса, смоделированный в классе контроллера, выполняет фактическую реализацию метода - PullRequest
0 голосов
/ 09 октября 2019

При написании модульного теста для класса контроллера я высмеивал вызов уровня обслуживания, чтобы вернуть желаемое значение, но вместо этого он возвращает ноль.

Тестовый класс

@RunWith(SpringJUnit4ClassRunner.class)
    public class ControllerTest {

        @Mock
        private Service serviceMock;

        @InjectMocks
        private Controller controller;

        private MockMvc mockMvc;

        /**
         * Sets the up.
         *
         * @throws Exception the exception
         */
        @Before
        public void setUp() throws Exception {
            MockitoAnnotations.initMocks(this);
            mockMvc = 
    MockMvcBuilders.standaloneSetup(controller).build();
        }

        @Test
        public void method1() throws Exception {
            when(this.serviceMock.associateTag(any(Request.class), null))
            .thenReturn(Responses.SUCCESS);
    mockMvc.perform(post("/tag/assign").contentType(MediaType.APPLICATION_JSON).content(request))               .andExpect(MockMvcResultMatchers.status().isOk());
        }

Класс контроллера

@PostMapping("/assign")
public RestResponse assignTag(@RequestBody final TagAssociation 
tagAssociation) {
final TagResponses serviceResponse = 
this.service.associateTag(tagOrderAssociation, null);  

serviceResponse всегда равен нулю, я ожидал ответа на перечисление Respons.SUCCESS

Stack Trace

testException = org.springframework.web.util.NestedServletException: Обработка запроса не удалась;Вложенное исключение - java.lang.NullPointerException

Уровень службы имеет много зависимостей, которые автоматически подключаются. мне тоже надо издеваться? Не удалось выяснить точную причину сбоя.

1 Ответ

1 голос
/ 09 октября 2019

Когда вы используете совпадения во время заглушки, вы должны использовать их для всех входных параметров. Так что попробуйте:

when(this.serviceMock.associateTag(Mockito.any(Request.class), Mockito.eq(null)))

Если вы хотите прочитать дальше, я написал эту статью на Mockito Stubbing

...