首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >你如何等待一个承诺使用量角器和柴?

你如何等待一个承诺使用量角器和柴?
EN

Stack Overflow用户
提问于 2016-08-17 13:00:45
回答 1查看 850关注 0票数 0

我正在等待一个承诺的解决方案使用黄瓜,柴和量角器。在发送回调之前,是否有一种方法可以使用柴等待发生某些事情(比如页面负载)?

我想要这样的东西:

代码语言:javascript
复制
browser.get(url).then(callback)

我以为会在柴区:

代码语言:javascript
复制
browser.get(url).should.be.fulfilled.and.notify(callback);

虽然当我这样做时,我只是得到一个超时,但我看到页面已经加载。我已经将其设置为:

代码语言:javascript
复制
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;
var should = chai.should;

我不想检查什么,我只是想确保页面加载。据我所见,大多数人就是这样做的:

代码语言:javascript
复制
browser.get(url);
callback();

然后,只在Gherkins子句中使用assertexpect,但我希望等待页面在给定的时间或在给定的时间加载。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-17 15:52:50

我对您的问题的理解是,您希望CucumberJS中的异步CucumberJS表现为同步执行,这样一旦您完成了使用browser.get(url)的步骤,就会执行下一个步骤定义。如果这就是你的问题,那么,我们可以-

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

当我使用return函数对结果执行一些操作时,我更倾向于使用.then承诺,如果不是,则使用.done回调函数,而且您现在不需要callbacks,CucumberJS现在支持promises。所以你的step文件应该是-

代码语言:javascript
复制
var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;

module.exports = function () {


this.Given(/^I launch the protractor demo page$/, function () {
   return browser.get('http://juliemr.github.io/protractor-demo/');
    });
});

this.When(/^I check the title of the page$/, function () {
   return browser.getTitle().then(function(text){
       console.log('title is - ' + text);
        expect(text).to.equal('Super Calculator');
    });

});
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38997394

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档