我有一个类,它接收工厂作为在构造函数内部调用的参数。必须在那里调用它,因为该对象应该在使用之前完全初始化。像这样的东西:
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,因为没有设置这样的期望。
问题是,如何在构造函数中模拟方法调用?
最佳答案
创建MyClass
后,可以在setUp
中EasyMock.reset(fooFactory)
。
关于java - 如何使用 easymock 模拟构造函数上的方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282364/