如何使用easymock在构造函数上模拟方法调用?

时间:2011-06-08 16:51:43

标签: java constructor easymock

我有一个类接收工厂作为在构造函数内部调用的参数。必须在那里调用它,因为在使用之前,对象应该完全初始化。类似的东西:

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而失败,因为没有设置这样的期望。

问题是,如何在构造函数中模拟方法调用?

1 个答案:

答案 0 :(得分:3)

创建EasyMock.reset(fooFactory)后,setUp可以MyClass