如何使用 EasyMock 和 PowerMock 模拟此方法?
How to mock this method using EasyMock and PowerMock?
我有这样的方法:
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 方法与调用的方法不匹配。它期望 object1 的 EasyMock class 被传递给 object.someMethod() 但得到的是 object1.class 的非模拟 class.
希望这是有道理的,并提前感谢您的帮助。
添加一些半真实代码:
public Object1 methodToTest(Object2 someParameter) {
Object3 object3 = new Object3();
object3.setSomeMethod(EnumObject1.FOO);
return object4.getSometMethod(object5, someParameter, EnumObject2.BAR, object3).getSomeMethod();
}
object4 和 object5 都自动连接到 class。
你可以这样做:
EasyMock.expect(object.someMethod(EasyMock.isA(Object1.class)).andReturn(result);
这将模拟 Object1
类型的任何对象。所以它对你有用。
在这种情况下,您将不需要使用以下代码:
Object1 object1 = EasyMock.createMock(Object1.class);
PowerMock.expectNew(Object1.class).andReturn(object1);
我有这样的方法:
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 方法与调用的方法不匹配。它期望 object1 的 EasyMock class 被传递给 object.someMethod() 但得到的是 object1.class 的非模拟 class.
希望这是有道理的,并提前感谢您的帮助。
添加一些半真实代码:
public Object1 methodToTest(Object2 someParameter) {
Object3 object3 = new Object3();
object3.setSomeMethod(EnumObject1.FOO);
return object4.getSometMethod(object5, someParameter, EnumObject2.BAR, object3).getSomeMethod();
}
object4 和 object5 都自动连接到 class。
你可以这样做:
EasyMock.expect(object.someMethod(EasyMock.isA(Object1.class)).andReturn(result);
这将模拟 Object1
类型的任何对象。所以它对你有用。
在这种情况下,您将不需要使用以下代码:
Object1 object1 = EasyMock.createMock(Object1.class);
PowerMock.expectNew(Object1.class).andReturn(object1);