junit.framework.AssertionFailedError:此时不再需要调用'scp'.要求结束.

als*_*scu 10 grails

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

'scp'被叫了两次.它第一次工作,第二次抛出异常.

als*_*scu 10

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

然后,使用可选范围作为参数指定要模拟的方法的名称.此范围确定您希望调用方法的次数,因此如果调用次数超出该范围(太少或太多),则会抛出断言错误.如果未指定范围,则假定默认值为"1..1",即必须仅调用该方法一次.

control.demand.scp(2..2){ file, todir, verb, pass -> return "" } 
Run Code Online (Sandbox Code Playgroud)

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

  • 这是严格的嘲弄.您必须指定方法将根据需要在模拟对象上调用的次数.您可以通过将标志传递给[mockFor指示松散的模拟]来绕过严格的模拟(http://grails.org/doc/latest/guide/testing.html#mockingCollaborators). (6认同)