在一次执行中多次运行Jasmine Spec

Run Jasmine Spec multiple times in one execution

本文关键字:运行 Jasmine Spec 一次 执行      更新时间:2023-09-26

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

你可以像这样在一个普通的for循环中运行specs:

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);
}

我在web服务器上使用独立发行的Jasmine 2.0与定制的SpecRunner.html。

茉莉花2.0没有循环函数

如果您想在开发的迭代中多次运行整个测试,您可以自定义SpecRunner来自动重新加载结果页。我已经写了一个自动刷新函数来检查测试规范和目标的"Last-Modified"标头。

如果你想多次运行一个case,只需将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();
        });
    });
}

你可以module.export你的规格,创建一个主规格,require你的规格,根据需要多次,最后在Jasmine中添加主规格。

详细教程:如何使用Protractor多次运行相同的Jasmine规格