似乎Grails单元测试utils方法mockFor并不像文档中所说的那样工作。
def strictControl = mockFor(MyService)
strictControl.demand.someMethod(0..2) { String arg1, int arg2 -> … }
strictControl.demand.static.aStaticMethod {-> … }
请注意,您可以使用模拟静态和实例方法 "静态"属性。然后,您可以指定方法的名称 mock,带有可选的范围参数。这个范围决定了多少 你希望调用方法的时间,以及数量 调用超出该范围(太少或太多) 然后会抛出一个断言错误。如果未指定范围,则a 默认为" 1..1"假设,即必须调用该方法 一次。
但是,在我测试的方法中,我有条件调用someMethod,如果是,则调用someMethod,否则不调用。如果它进入正面条件(这意味着调用someMethod)。
在我的测试中,我有一个类似于下面的模拟:
def strictControl = mockFor(MyService)
strictControl.demand.someMethod(0..0) { String arg1, int arg2 -> … }
'0..0'
从我对文档的理解意味着someMethod应该被称为零时间(从未被调用)。我的测试仍然通过。
我不知道为什么调用的时间完全匹配。