我正在使用 Protractor 来运行我的 cucumber 测试。在我的测试中,我有以下断言:
label.getText().then(
function(labelText){
labelText = labelText.trim();
console.log('label text: ' + labelText);
chai.expect(labelText).to.equal(arg1);
callback();
},
function() {
callback.fail('Could not get page label text');
});
当断言正确时就没有问题。但是,当我的 labelText 与 arg1 不同时,我仍想继续运行它,但我不知道如何在其中添加异常或失败回调。目前我的应用程序刚刚退出。我知道这是因为我没有使用失败回调(我想知道我应该在哪里使用它)。
我也不确定是否应该放置回调();现在在哪里。
我正在网上寻找解决方案,我能找到的只是使用 Mocha 的示例。我没有使用摩卡咖啡或 Jasmine 咖啡。我只是使用带有 Protractor 的 Cucumber 框架。由于 Cucumberjs 没有断言库,因此我为此添加了 chai-as-promised。谢谢!
最佳答案
当回调中的 expect()
调用失败时,
Cucumber.js 似乎存在问题。由于您已经安装了 chai-as-promised,请尝试执行以下操作:
var labelText = label.getText().then(
function(labelText){
labelText = labelText.trim();
console.log('label text: ' + labelText);
return labelText;
});
chai.expect(labelText).to.eventually.equal(arg1).then(callback);
我从 this comment 得到了这个解决方法这对我来说效果很好。
关于webdriver - Protractor 、 cucumber 和 Chai 如所 promise 的 : When chai assertion fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27067673/