我有一个具有以下流程的函数:
public static void func(
ClassA a, ClassB b) {
a.innerfunc().innerfunc().addListener(
new Listener<IUser>() {
@Override
public void onDataReceived(IUser response) {
mAttrDict = response.toDict();
}
@Override
public void onError(ErrorClass error) {
a.getLogger()
.error("log-message");
}
};
}
我想对addListener存根并发送自定义字典以进行测试。
用powermock可以实现吗?
谢谢
答案 0 :(得分:0)
使用 PowerMock 几乎总是屈服于不良的设计。
在您的情况下,您的代码似乎违反了“信息隐藏/封装”,导致“链条争吵”调用a.innerfunc().innerfunc()
您应该转换代码,以便需要模拟的对象可以作为注入的依赖项传递到被测代码,该依赖项可以使用vanilla Mockito创建。