一次执行多次运行Jasmine Spec

时间:2014-08-21 05:59:11

标签: javascript jasmine

我想在一次执行中多次运行我的jasmine测试用例。在一次执行中是否有任何循环或任何其他方法来执行特定的规范。

3 个答案:

答案 0 :(得分:5)

您可以在普通的for循环中运行规范,如下所示:

for(var i = 0; i < 1000; ++i) {
    it("random is in [0;1)", function () {
      var r = Math.random();
      expect(r >= 0 && r < 1).toBeTruthy();        
   });
}

如果你想用不同的参数运行它,它有点棘手。您必须将循环参数绑定到闭包范围,否则将始终使用循环参数的最后一个值调用测试。

// WRONG: test called 10 times with i == 10
for(var i = 0; i < 10; ++i) {
    it("i ^ 0 is 1", function () {
      expect(Math.pow(i, 0)).toEqual(1);
   });
}

// CORRECT: called with 1, 2, 3, 4....
for(var i = 0; i < 10; ++i) {
  (function(num) {
    it("i ^ 0 is 1", function () {
      expect(Math.pow(num, 0)).toEqual(1);
   });
  })(i);
}

答案 1 :(得分:4)

您可以module.export您的规范,根据需要多次创建主规范和require规范,最后在Jasmine中添加主规范。

详细教程:How to run identical Jasmine specs multiple times with Protractor

答案 2 :(得分:3)

我在网络服务器上使用Jasmine 2.0的独立版本和自定义的SpecRunner.html。

AFAIK,Jasmine 2.0没有循环功能。

如果要在开发迭代中多次运行整个测试,可以自定义SpecRunner以自动重新加载结果页面。 我编写了一个自动刷新功能,可以检查测试规范和目标“最后修改过的&#39;报头中。

如果你想多次运行一个案例,只需将 describe()或it()放入循环中。

for (var i = 0; i < 10; ++i){
    describe('test multiple times', function () {
        it('may be fine', function () {
            expect(Math.random() < 0.5).toBeTruthy();
        });
    });
}

但结果会很难看。