我对UserController
进行了单元测试,但自从升级到Grails 2.0后,flash
变量似乎总是返回没有消息的emtpy地图。
以下是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()
中停止。怎么可能是????
此致
纳斯
答案 0 :(得分:1)
对我而言,这意味着userInstance.validate()
返回false
,即验证失败。