EasyMock выбрасывает несовместимый тип возвращаемого значения в методе final - PullRequest
0 голосов
/ 11 марта 2020

По сути, я пытаюсь установить результат окончательного метода. Метод прост, как это:

@NotNull
public final Server getServer() {
    return this.server;
}

Я издеваюсь так:

EasyMock.expect(object.getServer()).andReturn(server);

Где сервер является POJO. Это бросает это:

java.lang.IllegalStateException: incompatible return value type
    at org.easymock.internal.MocksControl.andReturn(MocksControl.java:281)

Для этой строки. Я пытался не использовать POJO для сервера, а вместо этого дразнил его.

@Mock
private Server server = mock(Server.class);

И все же ошибка та же. Я абсолютно уверен, что они точно такого же типа. Почему это происходит?

Теперь по какой-то причине я получаю другую ошибку:

java.lang.IllegalStateException: no last call on a mock available

Тот же код, все, что у меня есть, это:

@Test
public void test() {
    EasyMock.expect(object.getServer()).andReturn(server);
    replayAll();
    TestedObject.useObject(object);
}

1 Ответ

0 голосов
/ 11 марта 2020

Причина, по которой вы получаете ошибку при издевательстве над последним методом, заключается в том, что он не поддерживается EasyMock. https://easymock.org/user-guide.html#mocking -ограничения

Финальные методы не могут быть опровергнуты. При вызове будет выполнен их нормальный код.

Вы можете использовать PowerMock для имитации методов final и stati c.

...