Не удается смоделировать функции при запуске теста mock mvc - PullRequest
0 голосов
/ 21 февраля 2020

Я пишу тестовый пример моего контроллера, используя макет mvc

@Mock
private AService aService;

@InjectMocks
private AController aController;



@BeforeEach
    public void init() {
        MockitoAnnotations.initMocks(this);
        mockMvc = MockMvcBuilders
                .standaloneSetup(aController)
                .setCustomArgumentResolvers(putAuthenticationPrincipal)  // for passing the authentication principal
                .build();
    }

Теперь, когда я пытаюсь проверить

@Test
    public void testfunction() throws Exception {
        String id = UUID.randomUUID().toString();
  Mockito.when(aService.getAccount(Mockito.anyString())).thenThrow(new Exception("not avalible"));
        mockMvc.perform(MockMvcRequestBuilders.get("/account/{id}", id)
....      
   }

В этом aService.getAccount () не издеваться вот почему я не получаю желаемого результата ..

Я не понимаю, почему в этом случае не работает подделка функций.

1 Ответ

0 голосов
/ 23 февраля 2020

В @WebMvcTest вы не должны создавать макет вашего контроллера. Spring должен создать контроллер в своем контексте и внедрить в него взаимодействующие сервисы.

Для этого:

  • аннотируйте класс теста с помощью @WebMvcTest(YourController.class)
  • аннотируйте сервисы сотрудничества с @MockBean, а не @Mock
...