raf*_*alf 6 jasmine protractor
it('should for something', function check(done) {
browser.sleep(2000);
$('.csTx').isPresent().then(function(result) {
if(result) {
done();
} else {
xPage.clickBack();
check(done);
}
})
}, 30000);
Run Code Online (Sandbox Code Playgroud)
有人可以解释done()的工作原理以及它的用途.我用谷歌搜索了它,但找不到任何容易让我理解的信息.我正在使用量角器和茉莉花进行自动化.请考虑以上代码.
done如果测试在测试的控制流中创建并行的TaskQueue,则需要使用(请阅读有关promises和控制流的更多信息).
例如:
describe('Control Flow', function() {
function logFromPromise(text) {
var deferred = protractor.promise.defer();
deferred.then(function() {
console.log(text);
});
deferred.fulfill();
return deferred;
}
it('multiple control flows', function() {
setTimeout(function() {
logFromPromise('1');
});
logFromPromise('0');
});
}
Run Code Online (Sandbox Code Playgroud)
调用setTime在控件中创建并行任务队列:
ControlFlow
| TaskQueue
| | Task<Run fit("multiple control flows") in control flow>
| | | TaskQueue
| | | | Task <logFromPromise('0');>
| TaskQueue
| | Task <setTimeout>
Run Code Online (Sandbox Code Playgroud)
量角器认为测试在0打印后"完成" .在此示例中,1可能会在测试完成后打印.要使量角器等待Task <setTimeout>,您需要调用done函数:
it('multiple control flows', function(done) {
setTimeout(function() {
logFromPromise('1').then(function() {
done();
});
});
logFromPromise('0');
});
Run Code Online (Sandbox Code Playgroud)
如果可以,请在测试"完成"时让量角器处理.并行TaskQueues可能会导致测试中出现意外的竞争条件.
| 归档时间: |
|
| 查看次数: |
4247 次 |
| 最近记录: |