如何使用EasyMock和PowerMock模拟此方法?

时间:2016-01-19 06:08:39

标签: java unit-testing powermock easymock

我有这样的方法:

public Object method() {
  Object1 object1 = new Object1();
  return object2.someMethod(object1);
}

现在我嘲笑这个假设是:

public void methodTest() {
  Object1 object1 = EasyMock.createMock(Object1.class);
  PowerMock.expectNew(Object1.class).andReturn(object1);

  Object2 result = new Object2();
  EasyMock.expect(object.someMethod(object1)).andReturn(result);
  EasyMockHelper.replayMocksFor(this);
  result = myTestClass.method();
  EasyMockHelper.verifyMocksFor(this);
}

我遇到一个错误,其中expect方法与被调用的方法不匹配。它期望将一个EasyMock类的object1传递给object.someMethod()但是得到一个非模拟的object1类。

希望有意义,并提前感谢您的帮助。

添加一些半实际代码:

public Object1 methodToTest(Object2 someParameter) {
    Object3 object3 = new Object3();
    object3.setSomeMethod(EnumObject1.FOO);
    return object4.getSometMethod(object5, someParameter, EnumObject2.BAR, object3).getSomeMethod(); 
}

object4和object5都在类中自动连接。

1 个答案:

答案 0 :(得分:0)

你可以这样做:

EasyMock.expect(object.someMethod(EasyMock.isA(Object1.class)).andReturn(result);

这将模拟Object1类型的任何对象。所以它对你有用。

在这种情况下,您不需要使用以下代码:

  

Object1 object1 = EasyMock.createMock(Object1.class);
  PowerMock.expectNew(Object1.class).andReturn(object1);