2016-08-17 11 views
0

私はCucumber、Chai、およびProtractorを使用して約束の解像度を待つことを試みています。 Chaiを使用してコールバックを送信する前に何か(ページロードなど)が発生するのを待つ方法がありますか?分度器とチャイを使用してどのように約束を待っていますか?

私が何かしたい:

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

私はそれを行うとき、私はちょうどタイムアウトを取得していますが、私はページを参照してくださいが、私はチャイになるだろうと思っ

browser.get(url).then(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(); 

をのみ句次にキュウリにassertまたはexpect使用しますが、私は、ページが与えられたかときにロードされるのを待ちたい:私が見たものから、ほとんどの人はちょうど行います。

答えて

1

私はあなたの質問を理解することは、あなたはbrowser.get(url)であなたのステップが完了したら、次のステップの定義が実行されるようCucumberJS非同期Given, When, Then'sは、などの同期実行を動作するようにしたいです。それはあなたの質問が、その後はいあるものであれば、我々はあなたがどちらかreturn約束したり、ステップの定義でdoneコールバックを使用する必要がthat-

を行うことができます。さもなければ、キュウリはあなたの非同期アクションがいつ完了したかを知らない。

私は.then機能と結果のいくつかのアクションを実行すると、私はないですとき、また、あなたが今callbacksを必要としないCucumberJSがpromisesをサポート.doneコールバック関数を使用していたとき、私はreturn約束することを好みます。したがって、あなたのステップファイルは次のようになります:

+0

return browser.get( 'http://google.com');のようなリターン関数を使用しようとすると、タイムアウトエラーで失敗します。また、 '.then'でタイムアウトする' callback'で試してみました。 – user3554664

+0

ok私はあなたのページがデフォルトタイムを増やそうとしているタイムアウトerror.didを取得している理由のステップの5000ミリ秒のデフォルト時間以上かかると思いますか? –

+0

私は1分で試しました。何も起こりませんが、私はページの負荷を参照してください。 – user3554664

関連する問題