3

分度器のテスト スイートを作成していますが、別のスイートから生成されたページを使用するものをテストする必要があります。テストの書き方は 1 つしかわかりませんが、良い書き方とは思えません。

var someStuffToSave = [];

describe('description of first thing', function(){
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
        element(by.id("something")).getText().then(function(){
          for(var i = 0; i < someStuffToSave.length; i++) (function(){
             var idx = i;
             describe('thing analysis' + idx, function(){
                it('should be something', function(){
                   expect(someStuffToSave[idx]).toEqual(true);
                });
             });
          })();
      });
    }); 
});

私はむしろこのようなことをしたいのですが、問題は2番目の記述の内部がすぐに実行され、最初の記述が完了するのを待たないことです。

var someStuffToSave = [];
describe('description of some thing', function(){
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings());
    });
    it('should generate some things', function(){
        someStuffToSave.push(generateSomeThings);
    }); 
});
describe('analyzing things', function(){
    for(var i = 0; i < someStuffToSave.length; i++)function(){
        var idx = i;
        describe('thing ' + idx, function(){
            it('should be something', function(){
                expect(someStuffToSave[idx]).toEqual(true);
            });
        });
     }
});

最初の説明で it の中に「then」を入れずにこれを書く方法はありますか?

4

1 に答える 1

1

一般に、'describe' ブロック内で Jasmine のセットアップ ログインを行うべきではありません。そこにあるコードは、Jasmine がテストをセットアップしている間に実行されますが、正しい順序ではありません。forループを「it」ブロック内に配置するだけで、2番目の方法が機能するはずです。

于 2014-07-22T18:56:21.873 に答える