2012-03-22 32 views
3

コントローラindex(grails generate-allコマンドで生成)のコントローラをテストする必要があります。私は(スポックで)このようなテストを持っている:Spockでコントローラをテストする

package mnm.schedule 

import grails.test.mixin.* 
import org.junit.* 
import grails.plugin.spock.* 
import spock.lang.Specification 
import org.example.*; 

class UserControllerSpec extends ControllerSpec { 


def "test"() { 
      setup: 
      mockLogging(UserController, true) 

      when: 
      controller.index() 

      then: 
      redirectArgs.action == "list" 
    } 

} 

私はこのようなエラーが出る:いつか私は、テストを実行することができた後

Error Error running script test-app :spock : cannot find shared instance field (Use --stacktrace to see the full trace) 

を、テストに合格してきています。

実際に間違っていますか?最初にエラーが表示されるのはなぜですか?私はSpock環境が初めてです。

ありがとうございます。

+0

エラーのアドバイスを受けて、--stacktraceオプションを付けてテストを実行します。それは私たちのクリスタルボールがもたらすより多くの情報をあなたに与えるでしょう。 – Gregg

+1

どのバージョンのGrailsをターゲットにしていますか? 2.x.xの場合は、@ TestFor(UserController)クラスレベルの注釈を使用してみてください。 – Esteban

+0

@Esteban:正しいです。出来た。なぜあなたは答えとしてそれを置くことができないのですか? –

答えて

3

Grails 2.x.xを使用している場合は、ユニットテストフレームワーククラスをミックスインで強化する@TestForアノテーションを使用する必要があります。

場合によっては、mockLoggingメソッドを使用できるように、クラスレベルの注釈として@TestFor(UserController)を追加する必要があります。

関連する問題