我有这样的情况:
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”与“结果”不同?
答案 0 :(得分:2)
您可以capture
传递给Callback
methodA
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
答案 1 :(得分:0)
你能重构一下,以便更容易测试吗?
class B {
void methodB(A a) {
a.methodA(new Callback() {
void onResult(Result r) {
onResultFromA(r);
}
});
}
void onResultFromA(Result r) {
}
}
然后只测试onResultFromA()
?
你真的不关心r
来自哪里,只是你用它做了正确的事情?
或者你呢?