0

Grails (1.3.3) の最新バージョンで controller.redirectArgs.action に何が起こったのか知っている人はいますか? 以前は正常に機能していましたが、使用すると 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 はすでに null です...

4

2 に答える 2

1

アクションを文字列と比較することで同じ問題が発生しました。以下は私のために働いた

コントローラーは次のようになります。

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() 
     ]
  }
}

テストクラスは次のようになります。

class SomeObjectControllerTests extends ControllerUnitTestCase {
    void testIndexRedirectToListAction(){
        controller.index()
        assertEquals controller.list, controller.redirectArgs.action
    }
}
于 2011-06-29T17:03:15.027 に答える
0

おかしい、私はここのドキュメントに従った: 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]
于 2010-12-30T10:46:53.430 に答える