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

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

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

最佳答案

创建MyClass后,可以在setUpEasyMock.reset(fooFactory)

关于java - 如何使用 easymock 模拟构造函数上的方法调用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6282364/

相关文章:

Java:为什么不覆盖 "this( )"?

java - 如何测试一个方法内部调用了不同的方法?

java - 使用 EasyMock 创建列表

java - eclipse是否每个项目都使用proguard?

java - NoSuchBeanDefinitionException : No qualifying bean

java - 将 JSON 结果转换为 Java 数组

java EasyMock 忽略从 TestedClass 的方法对对象的调用

java - 以静默模式安装 java 1.7 runtime jre-7u4(无用户交互)

c++ - 关于隐式构造函数的创建?

java - 为什么 void 方法中不允许使用 this() ?