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

问题描述 投票:0回答:1

我需要模拟包含函数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进行方法调用'的参数。

unit-testing java-8 mockito junit4
1个回答
0
投票

改变这一行:

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

对此:

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.