0

我正在尝试遍历一些选项并基于 mocha 中的这些选项构建测试。我已经建立了一个简单的概念证明,用于大致基于这个要点进行动态测试: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();
      });
    });
  });

您当前正在 beforeEach 块中添加测试,该块将在文件中的每个测试执行一次。因此,如果您在文件中添加另一个测试,所有测试都会重复。

上面的代码之所以有效,是因为声明一个测试只是执行一个函数(it(name, test)),所以我们可以遍历每个输入并执行该it函数。

于 2016-03-29T12:46:43.243 回答