当我使用 EasyMock 和 Guice 框架编写测试时,我遇到了一个问题。代码如下:
class A {
B b;
@Inject
public A(B b) {
this.b = b;
this.b.addListener(this);
}
}
class ATest {
@Inject
A a;
B b;
class InjectionModule extends AbstractModule {
protected void configure() {
b = createMock(B.class);
bind(B.class).toInstance(b);
}
}
public void setUp() {
createInjector(new InjectionModule()).injectMembers(this);
}
public void testSomething() {
replay(b);
a.doSomething();
verify(b);
}
}
在ATest
中,我将 B 实现替换为模拟对象。但是,当注入器创建 A 的实例时,B.addListener()
会在A
的构造函数中调用,不幸的是,即使我从未预料到,EasyMock 也会记录此调用。
因此,我的问题是 EasyMock 希望我B.addListener()
在每个测试用例中调用ATest
. 请给我任何建议来克服这个问题。谢谢。