【问题标题】:junit.framework.AssertionFailedError: No more calls to 'scp' expected at this point. End of demands.junit.framework.AssertionFailedError:此时不应再调用“scp”。要求结束。
【发布时间】:2013-12-18 01:09:41
【问题描述】:

在 grails 1.3.7 中进行集成测试时,我正在模拟一个名为“scp”的方法,并出现以下异常: junit.framework.AssertionFailedError:此时不应再调用“scp”。要求结束。

'scp' 被调用了两次。第一次成功,第二次抛出异常。

【问题讨论】:

    标签: grails


    【解决方案1】:

    当您模拟一个方法时,您可以指定一个范围,该范围指示您可以调用该方法的次数。取自文档:

    然后,您可以使用可选范围作为参数指定要模拟的方法的名称。这个范围决定了你希望方法被调用多少次,所以如果调用次数超出这个范围(太少或太多),就会抛出一个断言错误。如果未指定范围,则假定默认值为“1..1”,即该方法必须只调用一次。

    control.demand.scp(2..2){ file, todir, verb, pass -> return "" } 
    

    我找不到这个错误的原因,所以我希望这对某人有帮助。

    【讨论】:

    • 这是严格的嘲讽。您必须指定该方法按需调用模拟对象的次数。您可以通过将标志传递给 mockFor indicating loose mocking 来绕过严格的模拟。
    • 感谢 dmahapatro 的提示,在发现错误原因后,我意识到了该标志,但是当它发生时,我无法弄清楚是什么原因造成的。当您不关心该方法被调用多少次时,这是一个不错的选择。谢谢!
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 2012-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-01
    相关资源
    最近更新 更多