我有一个类接收工厂作为在构造函数内部调用的参数。必须在那里调用它,因为在使用之前,对象应该完全初始化。类似的东西:
class MyClass {
private Foo foo;
MyClass(FooFactory fooFactory, Bar bar) {
this.foo = fooFactory.newFoo(bar);
}
}
Foo的一个实例不能直接传递给构造函数,因此请考虑这是对问题的限制。 MyClass无法使用EasyMock进行测试,因为fooFactory将是一个未在setUp中初始化的模拟:
private MyClass myClass;
public void setUp() {
FooFactory fooFactory = mock(fooFactory);
Bar bar = new Bar();
myClass = new MyClass(fooFactory, bar)
}
因此,当调用setUp时,构造函数内的fooFactory.newFoo(bar)
调用将因IllegalStateException而失败,因为没有设置这样的期望。
问题是,如何在构造函数中模拟方法调用?
答案 0 :(得分:3)
创建EasyMock.reset(fooFactory)
后,setUp
可以MyClass
。