Соответствие не пустому списку в качестве аргумента с использованием Mockito - PullRequest
0 голосов
/ 18 января 2019

Когда я писал какой-то модульный тест, я пришел к тому, что мне нужно было применить макет, чтобы вернуть заданный результат, если входной параметр был не пустым списком. Не было важно знать, какие значения хранит список. Единственная важная вещь - это то, что это не пусто.

Я использую Mockito и ищу что-то вроде следующего.

when(mock.someMethod(anyNotEmptyList(String.class))).thenReturn(42);

Я немного погуглил, но ничего не могу найти: (

Большое спасибо.

Ответы [ 2 ]

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

Вы можете сделать это с Mockito Answer без использования Harmcrest:

 when(mock.someMethod(anyListOf(String.class)))
.then(invocation -> { 
                      List<String> list = invocation.getArgument(0);
                      return list.size() > 0 ? 42 : null;
                    }
 );

Здесь я указываю null в качестве значения по умолчанию, которое является возвращением по умолчанию для метода, вызываемого в Mock (конечно, без учета хороших значений).

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

Согласно дубликату, который я прокомментировал, вы должны попробовать:

class IsAtLeastOneElementList extends ArgumentMatcher<List<String>> {
    public boolean matches(Object list) {
        return ((List) list).size() > 0;
    }
}
...