我有這樣的方法:如何使用EasyMock和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);
}
我得到一個錯誤的預期的方法沒有什麼正在匹配起來調用。它期望一個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都自動在類佈線。
不要混用PowerMock和EasyMock – Jens
是上述代碼是否正確?你如何在methodTest()中的'method'和'object'中獲得'object2'? – YoungHobbit
object2是自動裝配的,object是被模擬的類中的實例變量。 –