我需要模拟包含函数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
必须是模拟,使用@Mock
或Mockito.mock(....)
创建