#java #unit-testing #mockito #java-stream
#java #модульное тестирование #mockito #java-поток
Вопрос:
У меня есть следующий поток:
Collection<FieldsMapperMetadata> fieldsMapperMetadataCollection =
Optional.ofNullable(typesMapperDefinition.getFieldMappersDefinitions()).orElse(Collections.emptyList())
.stream()
.map(fieldsMapperDefinition -> fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition))
.collect(Collectors.toList());
И я пытаюсь протестировать его с помощью mockito, но у меня возникла проблема с этой частью
fieldsMapperDefinition -> fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition)
вот сигнатура функции
private BiFunction<TypesMapperDefinition, FieldsMapperDefinition, FieldsMapperMetadata> fieldsMapperMetadataFactory;
и я пытался сделать что-то вроде этого:
Mockito.when(fieldsMapperMetadataFactory.apply(Mockito.eq(typesMapperDefinition1,fieldsMapperDefinition1)).thenReturn(fieldsMapperMetadata1);
но похоже, что Mockito.eq — неправильный подход…
Любая помощь по этому вопросу будет оценена
Ответ №1:
Вы передаете только один аргумент в метод apply, вы должны вызвать eq()
дважды:
Mockito.when(fieldsMapperMetadataFactory
.apply(Mockito.eq(typesMapperDefinition1), Mockito.eq(fieldsMapperDefinition1))
.thenReturn(fieldsMapperMetadata1);