Есть ли что-то вроде действительно хорошего макета?

Хорошие макеты как в EasyMock, так и в Mockito — это хорошая вещь для начала, если вы не хотите определять поведение для всего и если вы не хотите ограничивать вызовы этого макета.

Но для меня у них есть один большой недостаток: они всегда возвращают null, если возвращаемый тип метода Object или что-либо, наследующее от Object.

Мне интересно, есть ли что-то в одной или обеих платформах, которое возвращает Optional.empty() для методов, возвращающих Optional<?> или Collections.emptyList() для методов, возвращающих List<?> и так далее...

Я пока не смог найти ничего подобного.


person Chris    schedule 17.05.2019    source источник


Ответы (1)


Текущие версии Mockito по умолчанию возвращают пустые списки и опции. Насколько я знаю, это была новая функция версии 2.0 (по крайней мере, необязательно). Следующий тест прошел успешно с Mockito 2.27.0.

class MockitoTest
    static class SomeType {
        Optional<String> headline;
        List<String> texts;

        Optional<String> getHeadline() {
            return headline;
        }

        List<String> getTexts() {
            return texts;
        }
    }

    @Test
    void mock_returns_empty_List_by_default() {
        SomeType o = mock(SomeType.class);

        List<String> texts = o.getTexts();

        assertEquals(emptyList(), texts);
    }

    @Test
    void mock_returns_empty_Optional_by_default() {
        SomeType o = mock(SomeType.class);

        Optional<String> headline = o.getHeadline();

        assertFalse(headline.isPresent());
    }
}
person Stefan Birkner    schedule 17.05.2019
comment
Хорошо, тогда это так же просто, как использовать более актуальную версию фреймворка. - person Chris; 20.05.2019
comment
@Chris По крайней мере, для Mockito, это в любом случае хорошая практика. Эта структура довольно яркая, и они довольно часто добавляют новые функции. - person GhostCat; 20.05.2019