我试图使用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子句中使用assert
或expect
,但我想等待页面加载到Given或When。
答案 0 :(得分:1)
我对您的问题的理解是您希望Given, When, Then's
中的异步CucumberJS
表现为同步执行,这样一旦您完成browser.get(url)
的步骤,那么下一步定义就是执行。如果那是您的问题,那么是我们可以做到 -
您需要return
承诺或在步骤定义中使用done
回调。否则,黄瓜不知道您的异步操作何时完成。
当我使用.then函数对结果执行某些操作时,我更喜欢return
承诺,当我不使用时,我更喜欢使用.done
回调函数,而且您不需要{{1现在CucumberJS支持callbacks
。所以你的步骤文件看起来应该是 -
promises