是否可以使用构造函数参数创建模拟对象。例如 假设我有一个对象并使用两种构造函数。怎么样?
Class test{
List<String> list
public test()
{
list = new ArrayList<String>()
}
public test(List<String> list)
{
this.list = list
}
}
问题2: 如果其中一个方法返回一个模拟对象,我可以在真实对象上使用expect 例如PreferenceService prefServ = easyMock.create(...)现在,prefServ是一个模拟对象,它由“Test”类中的一个方法返回。 PreferenceService getPreferenceService()。如果我创建一个类型为Test的真实对象,我可以使用expect(test.getPreferenceService())。和return(mockPreferenceService)???我收到一个错误,指出不兼容的返回类型。
答案 0 :(得分:0)
我认为你想要的是部分嘲笑。你可以这样做:
PreferenceService prefServ = createMock(PreferenceService.class);
Test defaultTest = createMockBuilder(Test.class).addMockMethod("getPreferenceService").
createMock();
expect(defaultTest.getPreferenceService()).andReturn(prefServ);
现在你有了defaultTest,用默认的构造函数实例化,这是一个真正的Test实例,除了模拟getPreferenceService()方法。
List<String> testList = new ArrayList<String>();
Test otherConstructorTest = createMockBuilder(Test.class).
addMockMethod("getPreferenceService").withConstructor(testList);
expect(defaultTest.getPreferenceService()).andReturn(prefServ);
现在你有了与上面相同的内容,但这次Test对象是用List构造函数构建的。