как смоделировать разные ответы для метода с разными параметрами в Mockito - PullRequest
0 голосов
/ 11 октября 2018

Я использую Mockito для макета моего внешнего сервиса, и мой метод работы с внешним сервисом выглядит следующим образом:

public class ExternalConnector{
    public ResponseRaw callExternal(RequestParams request, ResponseRaw responseType){
    ...my implementation to call external service...
    }
}

, и я высмеиваю свой ответ следующим образом:

ExternalConnector externalConnector = Mockito.spy(new ExternalConnector());

ResonseRaw myMockResponse = ..... mock the response
RequestParams myParameter = ..... mock the params

doReturn(myMockResponse)//
    .when(externalConnector)//
    .callExternal(isA(myParameter.getClass()), isA(MyResponse.class));

До сих пор это работало нормально.Но если я сделаю еще один макет для моего метода callExternal с другим объектом RequestParams, то он запутается здесь и не будет знать, какой ответ ему нужно смоделировать, что-то вроде:

ResonseRaw myMockResponse = ..... mock the response
RequestParams myParameter = ..... mock the params

doReturn(myMockResponse)//
    .when(externalConnector)//
    .callExternal(isA(myParameter.getClass()), isA(MyResponse.class));

ResonseRaw myMockResponse2 = ..... mock the response
RequestParams myParameter2 = ..... mock the params

doReturn(myMockResponse2)//
    .when(externalConnector)//
    .callExternal(isA(myParameter2.getClass()), isA(MyResponse.class));

Проблема в том, что myParameter.getClass() и myParameter2.getClass () оба возвращают один и тот же тип класса RequestParams, и поэтому в основном подпись для макета одинакова для обоих случаев.

Я пытался изменить сигнатуру для моего макета с isA на eq, но она все равно не работала:

doReturn(myMockResponse2)//
    .when(externalConnector)//
    .callExternal(eq(myParameter), isA(MyResponse.class));

Может кто-нибудь помочь мне в этом вопросе здесь?Спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...