Mockito测试具有2个参数的函数

huangapple go评论101阅读模式
英文:

Mockito testing for function with 2 args

问题

  1. 我有以下的流:
  2. Collection<FieldsMapperMetadata> fieldsMapperMetadataCollection =
  3. Optional.ofNullable(typesMapperDefinition.getFieldMappersDefinitions()).orElse(Collections.emptyList())
  4. .stream()
  5. .map(fieldsMapperDefinition -> fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition))
  6. .collect(Collectors.toList());
  7. 我正试图使用 Mockito 进行测试,但在这部分遇到了问题:
  8. fieldsMapperDefinition -> fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition)
  9. 这是函数的签名:
  10. private BiFunction<TypesMapperDefinition, FieldsMapperDefinition, FieldsMapperMetadata> fieldsMapperMetadataFactory;
  11. 我尝试做类似于以下的事情:
  12. Mockito.when(fieldsMapperMetadataFactory.apply(Mockito.eq(typesMapperDefinition1,fieldsMapperDefinition1)).thenReturn(fieldsMapperMetadata1);
  13. 但是似乎 Mockito.eq 不是正确的方法...
  14. 对此的任何帮助将不胜感激
英文:

I have the following stream:

  1. Collection&lt;FieldsMapperMetadata&gt; fieldsMapperMetadataCollection =
  2. Optional.ofNullable(typesMapperDefinition.getFieldMappersDefinitions()).orElse(Collections.emptyList())
  3. .stream()
  4. .map(fieldsMapperDefinition -&gt; fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition))
  5. .collect(Collectors.toList());

And I'm trying to test it using mockito, but I'm having a problem with this part

  1. fieldsMapperDefinition -&gt; fieldsMapperMetadataFactory.apply(typesMapperDefinition, fieldsMapperDefinition)

here is the function signature

  1. private BiFunction&lt;TypesMapperDefinition, FieldsMapperDefinition, FieldsMapperMetadata&gt; fieldsMapperMetadataFactory;

and I was trying to do something like this:

  1. Mockito.when(fieldsMapperMetadataFactory.apply(Mockito.eq(typesMapperDefinition1,fieldsMapperDefinition1)).thenReturn(fieldsMapperMetadata1);

but seems like the Mockito.eq isn't the right approach...
Any help on this would be appriciated

答案1

得分: 1

你只向 apply 方法传递了一个参数,你应该调用 eq() 两次:

  1. Mockito.when(fieldsMapperMetadataFactory
  2. .apply(Mockito.eq(typesMapperDefinition1), Mockito.eq(fieldsMapperDefinition1))
  3. .thenReturn(fieldsMapperMetadata1);
英文:

You pass only one argument to the apply method, you should call eq() twice:

  1. Mockito.when(fieldsMapperMetadataFactory
  2. .apply(Mockito.eq(typesMapperDefinition1), Mockito.eq(fieldsMapperDefinition1))
  3. .thenReturn(fieldsMapperMetadata1);
  4. </details>

huangapple
  • 本文由 发表于 2020年10月2日 23:13:09
  • 转载请务必保留本文链接:https://go.coder-hub.com/64174026.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定