Mockito не насмешливая функция от контроллера в тесте - PullRequest
0 голосов
/ 12 февраля 2020

Я пытаюсь смоделировать метод, который вызывает мой контроллер, как показано:

@Post(value = "/blah", produces = MediaType.APPLICATION_JSON, consumes = MediaType.APPLICATION_JSON)
    @Transactional
    public HttpResponse<Object> createBlah(HttpHeaders httpHeaders,
            @Body @Valid CreateBlahRequest createBlahRequest) {
        HttpResponse<Object> createBlahResponse;

        (...)
        createBlahService(...) // what i am trying to mock

        return HttpUtils.getResponse(HttpStatus.CREATED, createBlahResponse.body());
    }

И в моем тесте я тестирую как показано:

    @Mock
    public BlahController blahController;

    public HttpResponse<Object> resp = HttpResponse.created((Object) new AccountResponse()).status(HttpStatus.OK);

    @BeforeAll
    public void configureAppContext() {
        Application.APPLICATION_CONTEXT = applicationContext;
        MockitoAnnotations.initMocks(this);
    }

@Test
    void createBlah(){

        MutableHttpRequest<CreateBlahRequest> request = HttpRequest
                .POST("/blah", createBlahRequest)
                .header("requestId", "1");

        when(blahController.createBlah(eq(request.getHeaders()), eq(createBlahRequest))).thenReturn(resp);

        HttpResponse<CreateBlahRequest> blahRes = client.toBlocking().exchange(request, CreateBlahRequest.class);

    }

Однако, когда клиент делает при обращении к контроллеру, кажется, не совпадает (когда) внутри моего теста, он продолжает работать как есть. Если кто-нибудь мог бы дать какой-то совет по этому поводу, он был бы очень признателен.

Ответы [ 2 ]

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

Любой, кто видит это, должен был ввести класс, который вызывает метод. В контроллере он вызывает другой класс обслуживания, поэтому я высмеял его так:

@Inject
public BlahService BlahService;

@MockBean(BlahService.class)
public BlahService blahService(){
    return Mockito.mock(BlahService.class);
}

, и он работал нормально.

...