我创建了一个执行缓慢异步任务的 jasmine 报告器,但 Protractor 在报告器的工作完成之前退出。如何让 Protractor 等待慢速记者完成?
在我的记者中,慢速任务是由 setTimeout
模拟的:
// SlowReporter.js
SlowReporter.prototype.reportRunnerResults = function() {
var p = q.defer();
setTimeout(function() {
console.log("Slow reporting op finished");
p.resolve();
}, 10000);
return p.promise;
};
但是,当我连接它时,
// protractor.conf.js
onPrepare: function() {
jasmine.getEnv().addReporter(new SlowReporter());
}
..protractor 在缓慢的任务完成之前退出。 Protractor 似乎并不尊重记者的 promise 。
请注意我不是在问how to make protractor wait on an async test ,而是如何让 Protractor 在测试完成后等待 Jasmine 记者。
最佳答案
FFR 通过在 SlowReporter
中定义一个 .completed()
方法来解决,该方法返回一个在 reporter 完成时解析的 promise;然后让 protractor.spec.js
在 onCleanUp()
中返回这个 promise 。仅适用于 Protractor >= 1.1.0 。
对更好的答案/方法持开放态度。
关于jasmine - 在 Jasmine 记者完成之前防止 Protractor 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941783/