easymock, макет, возвращающий макет
Я тестирую свой код Java с помощью EasyMock.
Кусок кода, который я хочу смоделировать, выглядит следующим образом:
requestInfo = mupClient.newEnqueueRequestCall().call(requestArgs);
Я издеваюсь над этим так:
expect(mupClient.newEnqueueRequestCall()).andReturn(enqueueRequestCall);
final Capture<EnqueueRequestArgs> captureRequestArgs =
new Capture<EnqueueRequestArgs>();
expect(mupClient.newEnqueueRequestCall().call(capture(captureRequestArgs))).
andThrow(new MUPCoralException("an exception"));
Но requestInfo
всегда null
, Даже если я изменю .andThrow()
часть к .andReturn(new RequestInfo())
, это все еще null
,
Я проверил другой аналогичный пост, но это не сработало. Теперь я смог прокомментировать это и, следовательно, создать новый вопрос.
ОТВЕТ: добавить все макеты объектов в replay
! пример replay(mockObj1, mockObj2, ...)
1 ответ
Решение
Попробуй это:
expect(mupClient.newEnqueueRequestCall()).andReturn(enqueueRequestCall);
final Capture<EnqueueRequestArgs> captureRequestArgs =
new Capture<EnqueueRequestArgs>();
expect(enqueueRequestCall.call(capture(captureRequestArgs))).
andThrow(new MUPCoralException("an exception"));
Проблема в том, что ваш enqueRequestCall
должен вернуться requestInfo
, mupClient
вернусь enqueueRequestCall
только после звонка replay
method from easymock.