Grails 2.0: MissingPropertyException при установке атрибута в сеансе - PullRequest
1 голос
/ 23 декабря 2011

После обновления до Grails 2.0.0 с 2.0.0.RC1 в моем контроллере наблюдается некоторое странное поведение при установке атрибута пользователя в сеансе.

Мой тест находится в процессе интеграции, и при запуске 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 тоже нормально.

Ошибка?

Привет

Jonas

1 Ответ

0 голосов
/ 29 марта 2012

У меня точно такая же проблема. Я использую Grails 2.0.1

Одна вещь, которую я замечаю, состоит в том, что неудачные тесты имеют некоторую настройку с использованием метакласса, например:

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

После удаления этой строки тест будет выполнен, пройдя часть, которая обращается к атрибутам сеанса. Но тесты не сработают при достижении точки вызова call ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...