2017-01-21 5 views
0

Railsから来て、私はGrailsで単体テストに苦労しています。 Grailsの中で次のように同等のものは何ですか?Rspecのletに相当するGrailsとは何ですか?

let(:some_variable) { SomeObject.new(name: 'Blabla', ...) }

私は、各テストで使用することができるいくつかの変数を定義したいです。だから、テストは2つの変数を持っているだろうし、応答がサイズ2

+0

あなたは、変数と応答について言及したが、何の操作あなたはシークは質問には欠けている。あなたはその質問についてもっと詳しく説明できますか? – dmahapatro

答えて

1

シンプルなケースで、これら二つのオブジェクトの配列をもたらすであろう

def "some test"() { 
    // given variable1 and variable2 

    then: 
    response.json.size() == 2 
} 

:さらに、私は次のように、オブジェクトが保存されるしたいと思います:

@TestFor(SomeController) 
class SomeControllerSpec extends Specification { 
    def "some test"() { 
     given: 
      def var1 = new SomeObject(name:"AAA").save(flush:true) 
      def var2 = new SomeObject(name:"BBB").save(flush:true) 
     when: 
      controller.someAction() 
      // assuming someAction fetches the SomeObject instances 
      // and marshals a JSON Response 
     then: 
      controller.response.json.size() == 2 
    } 
} 

または多分:

@TestFor(SomeController) 
class SomeControllerSpec extends Specification { 

    // var1 and var2 are saved to the DB, and persist across all 
    // the tests in this specification 
    def var1 = new SomeObject(name:"AAA").save(flush:true) 
    def var2 = new SomeObject(name:"BBB").save(flush:true) 

    def "some test"() { 
     when: 
      controller.someAction() 
     then: 
      controller.response.json.size() == 2 
    } 
} 
+0

しかし、 'let'はテストを通してこの実装を再利用できるようにします。これは、すべての例でそれを繰り返す必要があるようです。 –

+1

または、そのアクションを仕様のsetup()フェーズに配置します。 setup()とcleanup()メソッドも用意されています。テスト時にGrailsのdocsセクションを確認してください。 – railsdog

+0

回答を編集する必要があります。そしてメモをつけて、毎回新しいインスタンスを返すのではなく、オブジェクトを一度作成してから戻します。 –

関連する問題