我在protractor.conf文件中有以下记者:
var promise1 = new Promise(function (resolve) {
reporter1.afterLaunch(resolve.bind(this, exitCode));
});
var promise2 = new Promise(function (resolve) {
reporter2.afterLaunch(resolve.bind(this, exitCode));
});
return Promise.all([promise1, promise2]);
上述每位记者都有自己的发布后,一旦执行ptor.conf文件中的发布后,预计会执行。
这是Jenkins持续集成工作的一部分。所以正在发生的是,promise会解析,因此进程的退出代码变为0,即使测试失败因此也会覆盖作业的退出代码。因此即使它是一个合法的失败,詹金斯也将整个工作视为已经过去了。我需要保留传递给上述报告的exitCode
的原始值,以使jenkins作业按预期运行。我们怎样才能阻止这种情况?
答案 0 :(得分:0)
假设exitCode
是Number
,resolve.bind(this, exitCode)
返回一个函数,其第一个参数在这些变量(promise1和promise2)时被绑定到exitCode
的值声明
因此,在创建promise和启动reporter1.afterLaunch回调之间对exitCode所做的任何更改都不会反映在promises解析为的值中,
即。假设在创建promises时exitCode为零,那么无论exitCode被更改为什么,解析后的值都将为零
另一方面
var promise1 = new Promise(function (resolve) {
reporter1.afterLaunch(() => resolve(exitCode));
});
或
var promise1 = new Promise(function (resolve) {
reporter1.afterLaunch(function() {
resolve(exitCode);
});
});
将解析为exitCode的当前值