EasyMock 期望字段值为空

EasyMock Expect Field Value is Null

我是 EasyMock 的新手,通常使用 Mockito,所以如果这是一个愚蠢的问题请原谅,但我有一个 expect 调用使用了我正在测试的 class 中的字段之一。问题是,由于执行是 运行 在实际方法调用之前,该字段为空。

public class ClassToTest {
    SomeObject someObject = null;
    AnotherObject anotherObject;

    public String testMethod() {
        someObject = new SomeObject();
        String result = anotherObject.someMethod(someObject);
        System.out.println(result);
    }

    // Some other code here
}

ClassToTest testClass = new ClassToTest(); AnotherObject mockedObject = createMock(AnotherObject.class); expect(mockedObject.someMethod(testClass.someObject)).andStubReturn("test"); testClass.testMethod();

在 Mockito 中,这将被写为 when(mockObject.someMethod(testClass.someObject)).thenReturn("test"); 并且无论 someObject 在那个执行点是什么都会被使用。但是,使用 EasyMock,由于在设置 expect 调用时 someObject 为 null,因此调用期望 null 作为参数。

在 EasyMock 中有没有一种方法可以在实际调用 someMethod 时获取代码中的任何字段?

我不确定您是否可以使用 EasyMock 完成您描述的操作。

这里有一些备选方案:

1)

如果你想接受任何类型的对象,那么你可以使用EasyMock.anyObject(SomeClass.class)作为方法参数

expect(mockedObject.someMethod(EasyMock.anyObject(SomeClass.class)).andReturn("test")

2)

您可以使用 PowerMock (https://code.google.com/p/powermock/wiki/MockConstructor) 模拟 SomeObject 的构造函数,然后在模拟构造函数时期望返回的对象。它看起来像这样

SomeObject myObject = new SomeObject()
PowerMock.expectNew(SomeObject.class).andReturn(myObject);
expect(mockedObject.someMethod(myObject)).andReturn("test");

如果您采用 PowerMock 路线,请检查 link,因为使用 PowerMock 时需要一些额外的代码行。