【问题标题】:Unexpected Method Call despite having mocking statement for FOR loop : EasyMock尽管有 FOR 循环的模拟语句,但意外的方法调用:EasyMock
【发布时间】:2018-10-15 15:59:49
【问题描述】:

我很难使用 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:##)

【问题讨论】:

  • 更新到这个问题,我已经修复了,只模拟循环内的 DAO 调用,其余的其他调用通过使用反射注入服务调用来调用真正的测试方法,隔离不会覆盖 dao对象因此问题已解决,但无法追踪到底出了什么问题。

标签: java tdd dao easymock cucumber-junit


【解决方案1】:

帮不上忙。我需要一个完整的例子。但是缺少重播部分。

我认为问题在于EasyMock.expect(carServiceDao.create(EasyMock.anyObject(Car.class))).andReturn(carList); 只记录一次通话。然后循环正在执行许多调用。所以在第二次调用时,它会给出你看到的错误。

EasyMock.expect(carServiceDao.create(EasyMock.anyObject(Car.class))).andStubReturn(carList); 这样的操作应该可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-06
    • 2011-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-05
    相关资源
    最近更新 更多