返回stream.map中定义的函数的模拟对象

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了返回stream.map中定义的函数的模拟对象相关的知识,希望对你有一定的参考价值。

我需要模拟包含函数F <R,C>的依赖类。 要测试的类:

class ClassToBeTested{
 @Autowired
 DependentClass dependentClass;

 public String doSomething(List<Person> list){
  ...
    list.stream().filter(p->p.getAge()>28).
    map(dependentClass.transformToEmployee).
    collect(Collectors.toList());
 ...
}

DependentClass片段:

public Function<R, C> transformToEmployee = new Function() {
        public C apply(R rrd) {
            C cc = new C();
            if (rrd == null) {
                return cc;
            } else {
                ccInfo.setName(rrd.getFirstName()+ rrd.getLastName());
                ccInfo.setAge(rrd.getAge);
                return cc;
            }
        }
};

测试类片段:

@Test
public void testDoSomething(){
...
   Function<R, C> info =new TestHelper().transformToEmployee;
   info.apply(r); 
   when(mockedDependentClass.transformToEmployee).thenReturn(info);
...
}

现在我在控制台看到这个exception。 when()需要一个必须是'对mock进行方法调用'的参数。

答案

改变这一行:

when(mockedDependentClass.transformToEmployee).thenReturn(info);

对此:

when(mockedDependentClass.transformToEmployee()).thenReturn(info);

这应该解决你的问题(注意添加())。

请注意,mockedDependentClass必须是模拟,使用@MockMockito.mock(....)创建

以上是关于返回stream.map中定义的函数的模拟对象的主要内容,如果未能解决你的问题,请参考以下文章

Stream map()转化成新的类型流

Stream map()转化成新的类型流

Stream map()转化成新的类型流

Stream map 与 peek

streammap方法返回数据为空

java8中optional和.stream().map()