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 时需要一些额外的代码行。
我是 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 时需要一些额外的代码行。