你怎么等待使用量角器和柴的承诺?

时间:2016-08-17 13:00:45

标签: protractor chai chai-as-promised

我试图使用Cucumber,Chai和Protractor等待承诺解决方案。有没有办法使用Chai在发送回调之前等待某些事情(如页面加载)?

我想要类似的东西:

browser.get(url).then(callback)

我认为会在柴:

browser.get(url).should.be.fulfilled.and.notify(callback);

虽然当我这样做时,我只是暂停,但我看到页面已加载。 我已经将它设置为:

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var should = chai.should;

我不想检查某些内容,我只是想确保页面加载。从我所看到的大多数人看来:

browser.get(url);
callback();

并且只在Gherkins Then子句中使用assertexpect,但我想等待页面加载到Given或When。

1 个答案:

答案 0 :(得分:1)

我对您的问题的理解是您希望Given, When, Then's中的异步CucumberJS表现为同步执行,这样一旦您完成browser.get(url)的步骤,那么下一步定义就是执行。如果那是您的问题,那么我们可以做到 -

您需要return承诺或在步骤定义中使用done回调。否则,黄瓜不知道您的异步操作何时完成。

当我使用.then函数对结果执行某些操作时,我更喜欢return承诺,当我不使用时,我更喜欢使用.done回调函数,而且您不需要{{1现在CucumberJS支持callbacks。所以你的步骤文件看起来应该是 -

promises