上下文:使用Protractor在Angular JS中进行端到端测试
目标:我想针对许多不同的值运行相同的测试。理想情况下,循环遍历值数组并为每个值运行相同的it
块。
问题:由于Protractor将异步运行测试,因此在循环结束后将执行for
循环内的任何测试。
例如,
var values = ['...','...'];
for (var i = 0; i < values.length; i++) {
it('should do something good', function() {
// some test using this particular value in the values array
});
}
但是(假设数组中有10个项目),结果是测试运行10次,每次i
的值为9
,而不是0,1,2,3...
预期。这与测试的异步性质有关。
我尝试过的内容:根据this stack overflow question的回答使用done()
回调。
for (var i = 0; i < values.length; i++) {
it('should do something good', function (done) {
// some test using this particular value in the values array
setTimeout(done, 1000);
});
}
为什么不起作用:我收到以下错误:
/node_modules/protractor/jasminewd/index.js:44
throw new Error('Do not use a done callback with WebDriverJS tests
^
Error: Do not use a done callback with WebDriverJS tests. The tests are patched to be asynchronous and will terminate when the webdriver control flow is empty.
at null._onTimeout (/Users/drew/apps/hotrod/node_modules/protractor/jasminewd/index.js:44:19)
at Timer.listOnTimeout [as ontimeout] (timers.js:110:15)
关于如何遍历值数组并对每个值运行相同测试的任何想法?感谢
答案 0 :(得分:1)