我想在一次执行中多次运行我的jasmine测试用例。在一次执行中是否有任何循环或任何其他方法来执行特定的规范。
答案 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();
});
});
}
但结果会很难看。