Метод Mockito thenReturn не найден - PullRequest
0 голосов
/ 13 июля 2020

Я новичок в Mokito, так что, надеюсь, это простой вопрос. Я просматривал всевозможные примеры в Интернете, но мне кажется, что я могу создавать только вызовы thenReturn, которые возвращают логические значения. Я довольно запутался.

Вот мой код:

@Test
public void addSubscriptionShouldSubscribeForIsaData() throws SubscriptionException {
    ParrotSubscription mockSub = mock(ParrotSubscription.class);
    when(parrotPrimaryComponent.addSubscription(Mockito.any(ParrotSubscription.class))).thenReturn(mockSub);

    ParrotSubscription parrotSubscription = isaComponent.addSubscription(subscription);
    assertThat(parrotSubscription).isNotNull();

Кажется достаточно простым, но когда я компилирую, я получаю:

/home/sleepylight/workspace/asynchrony/sensors/sensor-isa/src/test/java/com/asynchrony/mfk/sensor/isa/IsaComponentTest.java:111: error: no suitable method found for thenReturn(ParrotSubscription)
    when(parrotPrimaryComponent.addSubscription(Mockito.any(ParrotSubscription.class))).thenReturn(mockSub);
                                                                                       ^
method OngoingStubbing.thenReturn(Boolean) is not applicable
  (argument mismatch; ParrotSubscription cannot be converted to Boolean)
method OngoingStubbing.thenReturn(Boolean,Boolean...) is not applicable
  (argument mismatch; ParrotSubscription cannot be converted to Boolean)

Итак, очевидно, что это не так. правильно.

Метод, который я тестирую, довольно прост.

public ParrotSubscription addSubscription(String subscriptionText) throws SubscriptionException {
    try {
        return primaryComponent.addSubscription(subscriptionText);

    } catch (DataQueryParserException e) {
        throw new SubscriptionException(e.getMessage(), e.getCause(), e.getLineNumber(), e.getStartIndex(),
                e.getStopIndex());
    }
}

Это просто оболочка вокруг метода addSubscription для primaryComponent, над которым я пытаюсь имитировать.

Может быть, я пропустил включение или сигнатуру функции, которую мне нужно определить? Я проверил метод min Mokito. java, и похоже, что он просто должен принимать тип generi c. Я использую mokito-core-2.18.3 , если это помогает.

Спасибо за внимание.

1 Ответ

1 голос
/ 13 июля 2020

Я нашел ответ. Это была глупая опечатка. Я передавал ParrotSubscription.class в addSubscription, который на самом деле возвращает логическое значение. Версия, которая принимает String, возвращает новую подписку ParrotSubscription. На днях я реорганизовал много этого кода и просто пропустил его.

Итак, урок усвоен. Тип возвращаемого значения напрямую связан с издеваемой функцией, и мне нужно быть уверенным, что я вызываю правильный метод. Спасибо за помощь. Оказывается, это была простая ошибка.

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