返回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
必须是模拟,使用@Mock
或Mockito.mock(....)
创建
以上是关于返回stream.map中定义的函数的模拟对象的主要内容,如果未能解决你的问题,请参考以下文章