0

私はいくつかのオプションをループして、モカのそれらのオプションに基づいてテストを構築しようとしています。この要点に大まかに基づいて動的テストを作成するための簡単な概念実証をセットアップしました: https://gist.github.com/cybertk/fff8992e12a7655157ed

dynamicSuite.addTest() を実行すると、「TypeError: test.retries は関数ではありません」というエラーが表示され続けます。エラーの原因がわかりません。mocha でテストを構築するこの方法に関するドキュメントはあまりないようです。

コードは次のとおりです。

var dynamicSuite = describe('dynamic suite', function() {
this.timeout(10000);

before( function (done) {
   var a = ['a', 'b', 'c'];
   for(let item of a){
      dynamicSuite.addTest(new common.Mocha.Test('test' + item, function(done){
        done();
      }));
    }
  done();
});

it('this is needed to make sure tests run', function (done) {
  done();
});

after(function(done) {
  done();
});
});//end describe test block
4

1 に答える 1

1

テストの可読性は重要です。プログラムでテストを生成すると、テストの可読性が損なわれるかどうか、および/またはテストにバグが含まれる可能性が高くなるかどうかを検討してください。

とはいえ、これはうまくいくはずです:

  describe('dynamic suite', function(){
    ['a','b','c'].forEach(function(letter, index){
      it('should make a test for letter' + letter, function(done){
        // do something with letter
        done();
      });
    });
  });

現在、ファイル内のテストごとに 1 回実行される beforeEach ブロックにテストを追加しています。したがって、ファイルに別のテストを追加すると、すべてのテストが複製されます。

上記のコードが機能するのは、テストの宣言は関数 ( it(name, test)) を実行するだけなので、各入力を反復処理してit関数を実行するだけです。

于 2016-03-29T12:46:43.243 に答える