jasmine - 在 Jasmine 记者完成之前防止 Protractor 退出

标签 jasmine protractor

我创建了一个执行缓慢异步任务的 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.jsonCleanUp() 中返回这个 promise 。仅适用于 Protractor >= 1.1.0 。

对更好的答案/方法持开放态度。

关于jasmine - 在 Jasmine 记者完成之前防止 Protractor 退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26941783/

相关文章:

javascript - 为什么仅在单元测试 $location 时必须包含 $route ?

javascript - Mocha 测试用例 - 嵌套 it() 函数是否符合规定?

angularjs - 在哪里声明 ngMock 模块

javascript - 无法测试是否在 Protractor 中选中了复选框

angular - 在 Angular 中,spyOn 无法使用异步管道

unit-testing - 使用 Backbone 防止 Jasmine 和 Sinon 进行 AJAX 调用

protractor - 执行 Protractor 测试时从命令行传递参数

angularjs - 在非 Angular 页面上使用 Protractor 测试登录

node.js - 使用 Protractor webdriver-manager 关闭 selenium webdriver 时出现问题

typescript - Observable.fromPromise 在单元测试期间为空