Grails 2.0: выпуск тестирования flash.message - PullRequest
3 голосов
/ 21 ноября 2011

У меня есть модульный тест для моего 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
  }
}

In 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 ()

КАК это может быть ????

С уважением

Jonas

1 Ответ

1 голос
/ 21 ноября 2011

Для меня это означает, что userInstance.validate() возврат false, т.е. проверка не пройдена.

...