一次执行多次运行Jasmine Spec

gau*_*mar 7 javascript jasmine

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

han*_*aad 7

您可以在普通的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();        
   });
}
Run Code Online (Sandbox Code Playgroud)

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

// 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);
}
Run Code Online (Sandbox Code Playgroud)