Метод тестирования с переменной, созданной с помощью Stream ... peek () - PullRequest
0 голосов
/ 23 января 2019

Я установил тестовый класс Mockito для тестирования метода, который генерирует переменную с использованием Java 8 Streams. По сути, это набор объектов (currentTr), которые имеют свойство isDeleted. Это строка, которая генерирует эту переменную.

FPTR = Stream.of(currentTR)
        .peek(CMService::markAsDeleted)
        .collect(Collectors.toSet();

При нормальной работе работает нормально. Объекты в этой коллекции устанавливаются как удаленные.

Проблема в том, что когда я запускаю свои тестовые случаи, эта переменная не содержит объектов, установленных для удаления (другими словами, кажется, что либо peek(), либо указанный метод (markAsDeleted) никогда не вызывается).

Я думал об использовании when().thenCallRealMethod(), однако, учитывая, что markAsDeleted является пустым методом, я получаю сообщение об ошибке, которое также не позволит мне сделать это. Ошибка:

when(cmservice.markAsDeleted(anyObject())).thenCallRealMethod();

java: тип 'void' здесь не разрешен

Я смоделировал CMService в тестовом поле следующим образом:

@Mock
CMService cmservice;

Есть ли способ вызвать вызов метода в .peek(), чтобы я вообще получил правильную переменную или это проблема установки?

1 Ответ

0 голосов
/ 23 января 2019

Причина, по которой вы не можете использовать when() для настройки, заключается в том, что для этого работающий метод должен что-то возвращать. Однако есть также «обратный» API / синтаксис для того, что вы хотите использовать, например:

doCallRealMethod().when(cmservice).markAsDeleted()

См. документацию . Есть еще кое-что. Наиболее общим является метод doAnswer().

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