2016-10-03 5 views
3

AMDモジュールをテストするのにgrunt-contrib-jasmineを使用しています。箱の外では、テストがお互いに影響を与えているようです。前と後で別のテストに漏れます

出力はファイルごとにテストを区切りません。これは、テストに何かを記録することによって確認できますbeforeEach。すべてのテストで、すべてのテストファイルに対して同じコールバックが実行されます。

どのようにしてテストを互いに分離し、テスト仕様ファイルで分離することができますか?別のレベルの入れ子を追加する唯一のソリューションですか?

面倒な設定

options: { 
    specs: 'test/specs/unit/**/*spec.js', 
    keepRunner: true, 
    template: require('grunt-template-jasmine-requirejs'), 
    templateOptions: { 
     requireConfig: requireConfig 
    } 
} 

sample1.spec.js:

define(['Squire', 'sinon'], function(Squire, sinon){ 
    'use strict'; 

    var sut, 
     injector, 
     fakeServer; 

    beforeEach(function(done){ 
     fakeServer = sinon.fakeServer.create(); 
     console.log('create fake server'); // this is logged for all test files 
     injector = new Squire(); 
     injector.require(['core/http-service'], function(httpService) { 
      sut = httpService; 
      done(); 
     }); 
    }); 

    afterEach(function(){ 
     fakeServer.restore(); 
     injector.remove(); 
    }); 

    it('', function(){ 
     expect(1).toBe(1); 
    }); 
}); 
+0

あなたがしている例から離れて、それ以上のテストを入れ子にしていますここに表示されますか? –

+0

1-2レベルの 'describe()'を持つ 'x.spec.js'テストファイルがいくつかあります。このプラグインが動作するためには、同じ仕様のテストを本当に行う必要がありますか? – Johan

+0

入れ子になった 'describe'を含むdescribeで' beforeEach'または 'afterEach'を使用していて、内側の' describe'にしか影響しないことを期待しているのでしょうか?明白かもしれないが、それはチェックの価値がある。 –

答えて

3

問題は、あなたがbeforeEachdescribeafterEach外を持っているということです。それは、彼らがそれぞれのテストの前後に呼び出されることを意味します。grunt-contrib-jasmineが見つけます。

あなたがそれらをあなたのdefine -edモジュール内でのみitのために使用したい場合は、あなたがdescribe内にそれらを配置する必要があります。

define(['Squire', 'sinon'], function(Squire, sinon){ 
    'use strict'; 

    describe('some description', function(){ 

     var sut, 
      injector, 
      fakeServer; 

     beforeEach(function(done){ 
      fakeServer = sinon.fakeServer.create(); 
      console.log('create fake server'); // this is logged for all test files 
      injector = new Squire(); 
      injector.require(['core/http-service'], function(httpService) { 
       sut = httpService; 
       done(); 
      }); 
     }); 

     afterEach(function(){ 
      fakeServer.restore(); 
      injector.remove(); 
     }); 

     it('', function(){ 
      expect(1).toBe(1); 
     }); 
    }); 
}); 
+0

ええを開くと、私はそれを見ています。私はちょうど興味があったのは、プラグインにネストしないで名前で区切るように指示する方法があったからです。確認していただきありがとうございます。ところで、あなたは別の23時間の恩恵を得ることはできません:) – Johan

関連する問題