EasyMock期望字段值为空

时间:2015-03-20 14:16:27

标签: java mocking mockito easymock

我是EasyMock的新手,通常使用Mockito,所以如果这是一个愚蠢的问题请原谅,但我有一个期望的电话,它使用我正在测试的类中的一个字段。问题是,由于execute在实际方法调用之前运行,因此该字段为空。

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,因为someObject在设置expect调用时为null,所以调用期望null作为参数。

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

1 个答案:

答案 0 :(得分:1)

我不确定你是否能用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路线,请检查该链接,因为使用PowerMock时需要一些额外的代码行。