我有以下方法,我需要编写一个测试用例,可以覆盖代码覆盖率中的所有行。
public Consumer<Obj> abc() {
return obj -> {
Obj info = new Obj(obj);
xyz.accept(anotherPrivateMethod(info));
};
}
我希望我的 Mockito 测试用例调用
Obj info = new Obj(obj)
和 xyz.accept(anotherPrivateMethod(info))
尝试了以下来自堆栈溢出搜索的代码,但它不起作用。
Obj o = Mockito.mock(Obj.class);
String objInfoString = mapper.writeValueAsString(o);
Mockito.doAnswer(ans -> {
Consumer<Obj> callback = (Consumer<Obj>) ans.getArgument(1);
callback.accept(o);
return null;
}).when(consumerObj).accept(any());
Mockito.verify(xyz).accept(objInfoString);
如有任何帮助,我们将不胜感激。
我看到两个选项:
public class ObjConsumer implements Consumer<Obj> {
private final Xyz xyz;
private final Function<Obj, Obj> objFactory;
private final OtherDependencies od;
/constructor
public void accept(Obj obj) {
Obj info = objFactory.apply(obj);
xyz.accept(od.doStuff(info));
}
}
继续为班级编写测试并提供模拟。