我在控制器中有这段代码:
def update = {
Map model = [:]
model.foo = params.foo
model.bar = params.bar
def result = ""
MyObject obj = MyObject.findWhere(bar:bar, foo:foo)
MyObjectService.updateObj(model,obj)
result = true
render result as JSON
}
这个简单的单元测试:
def 'controller update'() {
given:
controller.params.foo = foo
controller.params.bar = bar
MyObject obj = new MyObject(bar:bar, foo:foo)
mockDomain(MyObject,[obj])
when:
controller.update()
then:
1 * MyObject.findWhere(bar:bar, foo:foo) >> obj
1 * MyObjectService.updateObj(model,obj)
and:
def model = JSON.parse(controller.response.contentAsString)
model == true
where:
foo = "0"
bar = "1"
}
现在这是失败的,它告诉我,"不是静态方法findWhere适用..."对于那些论点。那个" MyObject"只是一个orm类,当我运行该应用程序时,一切似乎工作正常,但测试失败。
我的逻辑是:
我想计算调用findWhere
和updateObj
方法的次数,我也在嘲笑他们的回复。因此findWhere
将返回我已经模拟的对象,并将其传递给服务。
为什么会失败的任何想法?