量角器,黄瓜和柴承诺:当chai断言失败

时间:2014-11-21 18:11:31

标签: webdriver protractor chai cucumberjs chai-as-promised

我正在使用量角器进行黄瓜测试。在我的测试中,我有以下断言:

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的例子。我不是在使用摩卡或茉莉花。我只是使用带有量角器的Cucumber框架。由于Cucumberjs没有断言库,我加入了chai-as-promise。谢谢!

2 个答案:

答案 0 :(得分:1)

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得到了这个解决方法,对我来说效果很好。

答案 1 :(得分:0)

如果你有chai-as-promised,那么你可以断言像这样的异步代码:

this.When(/^I assert async code$/, function(callback) {
    expect(asyncMethod()).to.eventually.equal(true).and.notify(callback);
});