我很难用EasyMock解决意外的方法调用错误问题,该方法在for循环内进行了DAO调用。
for ( Car obj : carList) {
objModified=carHelper.addPrice(obj);
carServiceDao.create(objModified);
}
测试方案:
carServiceDao = EasyMock.createMock(ICarDaoDao.class);
EasyMock.expect(carServiceDao.create(EasyMock.anyObject(Car.class))).andReturn(carList);
错误情况: java.lang.AssertionError: 意外的方法调用carServiceDao.create(null): 在org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44) 在org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94) 在org.easymock.internal.ClassProxyFactory $ MockMethodInterceptor.intercept(ClassProxyFactory.java:97) 在############################。###### Impl $$ EnhancerByCGLIB $$ b59c96b7.create() 在✽。汽车服务运行时(CarCalculations.feature:##)
另一种测试场景:
EasyMock.expect(carServiceDao.create(carList)).andReturn(carList);
java.lang.AssertionError:意外的方法调用carServiceDao.create(Car [name:###,color:####,fuel:###]): 在org.easymock.internal.MockInvocationHandler.invoke(MockInvocationHandler.java:44) 在org.easymock.internal.ObjectMethodsFilter.invoke(ObjectMethodsFilter.java:94) 在org.easymock.internal.ClassProxyFactory $ MockMethodInterceptor.intercept(ClassProxyFactory.java:97) 在############################。###### Impl $$ EnhancerByCGLIB $$ b59c96b7.create() 在✽。汽车服务运行时(CarCalculations.feature:##)
答案 0 :(得分:0)
不能帮助。我需要一个完整的例子。但是缺少重播部分。
我认为问题在于EasyMock.expect(carServiceDao.create(EasyMock.anyObject(Car.class))).andReturn(carList);
仅记录一个呼叫。然后循环执行许多调用。因此,在第二次致电时,它将给出您所看到的错误。
执行类似EasyMock.expect(carServiceDao.create(EasyMock.anyObject(Car.class))).andStubReturn(carList);
的操作即可解决问题。