Grails 2.0:问题测试 flash.message
Posted
技术标签:
【中文标题】Grails 2.0:问题测试 flash.message【英文标题】:Grails 2.0: Issue testing flash.message 【发布时间】: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 是否有效? 【参考方案1】:对我来说,这意味着userInstance.validate()
返回false
即验证失败。
【讨论】:
不是这个原因,验证没有失败。即使我在 else 块中将消息分配给flash.message
,我也会遇到同样的问题。以上是关于Grails 2.0:问题测试 flash.message的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Grails 2.0 服务中对 i18n 注入 messageSource 的使用进行单元或集成测试
grails 2.0 - 正确使用 serverURL 进行生产?