[英]Failing Unit Test In Grails 1.3.7 Spock
我在控制器中有这段代码:
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
将返回我已经findWhere
的对象,并将其传递给服务。
有什么想法为什么会失败吗?
对于模拟静态方法,您应该使用v0.7中引入的Spock的GroovyStub类。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.