Grails 1.3.3: controller.redirectArgs.action не заполнен - PullRequest
0 голосов
/ 28 июля 2010

Кто-нибудь знает, что случилось с controller.redirectArgs.action в последней версии Grails (1.3.3)? Раньше он работал правильно, но теперь я получаю NPE, когда использую его.

class FooController {
    def someRedirect = {
        redirect(action:"bar")
    }
}

class FooControllerTests extends grails.test.ControllerUnitTestCase {
    void testSomeRedirect() {
        controller.someRedirect()
        assertEquals "bar", controller.redirectArgs.action
    }
}

В этом случае controller.redirectArgs уже равен нулю ...

Ответы [ 2 ]

1 голос
/ 29 июня 2011

У меня была такая же проблема при сравнении действия со строкой.у меня сработало следующее, где

Контроллер выглядит примерно так:

class SomeObjectController {

  def index = { redirect(action:list,params:params) }

  def list = {
     params.max = Math.min( params.max ? params.max.toInteger() : 10,  100)

     [ 
      someObjectInstanceList: someObject.list( params ), 
      somObjectInstanceTotal: someObject.count() 
     ]
  }
}

и тестовый класс будет выглядеть примерно так:

0 голосов
/ 30 декабря 2010

Забавно, я следовал документации здесь: http://www.grails.org/Testing+Controllers

Я звоню: assertEquals "nextAvailable", controller.redirectArgs.action

и я получаю следующее:

junit.framework.AssertionFailedError: junit.framework.AssertionFailedError: expected:<nextAvailable> but was:<com.***.***.XxxxXxxxController$_closure1@3da2cda9>

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

Я нашел решение здесь: www.ibm.com/developerworks/java/library/j-grails10209/index.html?ca=drs-

Если вы быстро нажмете Ctrl / cmd + F, вы обнаружите, что это утверждение проходит:

assertEquals controller.nextAvailable, controller.redirectArgs.action

Это также проходит:

assertEquals controller.nextAvailable, controller.redirectArgs[action]
...