【发布时间】:2012-01-02 17:56:07
【问题描述】:
我对我的UserController 进行了单元测试,但自从升级到 Grails 2.0 后,flash 变量似乎总是返回一个没有消息的空映射。
这里是UserControllerTests的一些代码sn-ps:
@TestFor(UserController)
@Mock(User)
class UserControllerTests {
...
void testSaveSucceeds() {
params.userName = 'Joe'
...
controller.save()
assert null != flash.message
assert '/user/list' == response.redirectedUrl
}
}
在UserController:
def save = {
def userInstance = new User(params)
if (userInstance.validate()) {
flash.message = message(code: 'default.created.message', args: [userInstance.userName ])
...
}
但是我的测试结果如下:
assert null != flash.message
| | |
| [:] null
false
我也尝试过作为集成测试,否则response 也会为空,但它并没有解决闪存问题。 view 和 model 也存在同样的问题。
我错过了什么?任何帮助都非常感谢。
问候
乔纳斯
编辑:
这是一个奇怪的场景:
我的控制器有以下内容:
def test = {
flash.message = "Message"
}
def save = {
flash.message = "Message"
}
我的测试看起来像这样:
void testSaveSucceeds() {
controller.save()
println ">>> ${flash}"
controller.test()
println ">>> ${flash}"
}
这样的输出:
>>> [:]
>>> [message:Message]
有趣的是,IntelliJ 中的调试器在 test() 操作中的断点处停止,但在 save() 中没有停止
怎么会这样????
问候
乔纳斯
【问题讨论】:
-
使用 grails 1.3.7 是否有效?
标签: unit-testing grails controller grails-2.0