用powermock存根嵌套的私有异步函数

时间:2018-09-12 13:25:55

标签: java mockito powermockito

我有一个具有以下流程的函数:

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可以实现吗?
谢谢

1 个答案:

答案 0 :(得分:0)

使用 PowerMock 几乎总是屈服于不良的设计。

在您的情况下,您的代码似乎违反了“信息隐藏/封装”,导致“链条争吵”调用a.innerfunc().innerfunc()

您应该转换代码,以便需要模拟的对象可以作为注入的依赖项传递到被测代码,该依赖项可以使用vanilla Mockito创建。