1

我有这样的情况:

class A {
  void methodA(Callback cb) {
    ...
    cb.onResult(result);
  }
}

class B {
  void methodB(A a) {
    a.methodA(new Callback() {
      void onResult(Result r) {
        ...
      }
    });
  }
}

问题是:如何使用 EasyMock 测试具有不同“结果”的“B.methodB”?

4

2 回答 2

2

你可以传递captureCallbackmethodA

Capture<Callback> cap = new Capture<Callback>();
mockA.methodA(capture(cap));
replay(mockA);
instanceOfB.methodB(mockA);
Callback cb = cap.getValue();

// now we can call cb.onResult with a mocked Result instance
于 2013-05-04T15:44:07.577 回答
1

您可以重构以使其更易于测试吗?

class B {
  void methodB(A a) {
    a.methodA(new Callback() {
      void onResult(Result r) {
        onResultFromA(r);
      }
    });
  }
  void onResultFromA(Result r) {
  }
}

然后只是测试onResultFromA()

你真的不在乎r从哪里来,只是你用它做正确的事吗?

还是你?

于 2013-05-04T10:44:55.907 回答