Grails 2.0:在Session上设置属性时出现MissingPropertyException

时间:2011-12-23 02:56:07

标签: unit-testing session grails controller

从2.0.0.RC1升级到Grails 2.0.0在会话中设置用户属性时,我的控制器中有一些非常奇怪的行为。

我的测试正在集成中,当运行grails --integration test-app或从IDE运行时,所有测试都通过但是当首先使用单元测试运行grails test-app 时,它会失败。

我只是在UserController.login()操作中为会话设置用户:

session.user = user

我的测试看起来像这样:

params.userName = testUser1.userName  // some user domain instance
params.password = testUser1.password
controller.doLogin()
assert null != session.user

运行grails test-app时,我在session.user=user行收到以下错误:

groovy.lang.MissingPropertyException: No such property: user for class: org.codehaus.groovy.grails.web.servlet.mvc.GrailsHttpSession
Possible solutions: new

使用以下工作替换控制器代码:

session.setAttribute('user',user)

和测试:

assert null != session.getAttribute('user')

如上所述,这仅在运行完整测试套件时发生。如果正在运行--integration,那很好。 run-app也可以。

一个错误?

此致

纳斯

1 个答案:

答案 0 :(得分:0)

我有完全相同的问题。我正在使用Grails 2.0.1

我注意到的一件事是,失败的测试使用metaClass进行了一些设置,例如:

controller.metaClass.message = {args -> "mockMessage"}

删除该行后,测试将运行访问会话属性的部分。但是当达到调用message()

的点时,测试将不起作用