我有一个单元测试,UserController
但自从升级到 Grails 2.0 后,该flash
变量似乎总是返回一个没有消息的空映射。
以下是一些代码片段UserControllerTests
:
@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() 中没有
这个怎么可能????
问候
乔纳斯