在量角器中使用chai-as-promise

时间:2014-06-03 15:35:39

标签: selenium-webdriver promise protractor chai

关注this example我可以使用expect语法进行测试,但不能使用should语法。

以下作品:

var expect = chai.expect;
describe('expect syntax', function() {
    it('should work', function() {
        ...
        expect(promise).to.eventually.eql('something');
    });
});

但这不是:

chai.should();
describe('should syntax', function() {
    it('should work', function() {
        ...
        (true).should.be.true;
        promise.should.eventually.eql('something');
    });
});

由于我收到以下错误:TypeError: Cannot read property 'eventually' of undefined我认为应该执行扩展Object原型的常规操作,但这不适用于webdriver promise对象。这有什么不对?

2 个答案:

答案 0 :(得分:2)

my issue以及我错过的other issue之后,问题的根源似乎是webdriverjs承诺基于promise / A和promise / B而chai-as-expected期待承诺/ A +类型的承诺。

在Q承诺中包装websriverjs承诺解决了这个问题:

Q(webdriverjspromise).should.eventually.eql('something')

答案 1 :(得分:0)

这对我们有用..

  var element = $('#mainDiv');      
  expect(element.isEnabled()).to.eventually.to.equal(true, "Expect Button to be enabled.");

我确保“承诺”真的是一个承诺,并且eql是否有效?我总是使用相同的。

另一方面,我们正在使用Cucumber和Chai& Chai-as-promise,但这与承诺无关。