【发布时间】:2014-01-14 17:33:45
【问题描述】:
在控制器中有一个动作:
def delete = {
withDomain {
it.delete()
flash.message = "${message(code: 'default.deleted.message', args: [message(code: 'chocolateBar.label', default: 'ChocolateBar'), it.name])}"
redirect action: 'list'
}
}
可以在开发中测试。而在单元测试中,message(..) 方法抛出异常( groovy.lang.MissingMethodException: No signature of method: longtest.ChocolateBarController.message() 适用于参数类型:(java.util .LinkedHashMap) 值:[[code:chocolateBar.label, default:ChocolateBar]]):
public void testDelete() {
controller.params.id = '3'
controller.delete()
assert 'list'==controller.redirectArgs.action
}
经过研究,应在设置期间调用 mockTagLib 方法。但是找不到内置消息(..)的正确类名。请帮忙。
【问题讨论】:
-
找到了这个问题:stackoverflow.com/questions/6176930/… 已回答,但答案不清楚:tagLib is not a property of **ControllerTests.
-
我没有具体做这个,但是当你调用action之后访问controller.flashMessage会发生什么?
-
我也没想过这个问题。包含
message(..)(来自内置 Grails 标记库?)的操作的控制器正在测试中,然后抛出 MissingMethodException。
标签: unit-testing grails message taglib