私はブラウザアクションのテストを自動化するためにzombie.jsを使用しています。この場合、ボタンをクリックしてフォームを送信します。Zombie.js pressButtonブラウザのpost-ajaxバージョンにアクセスするには?
テストの外では、実際のブラウザでは、ボタンをクリックすると、AJAX要求がトリガされます。 AJAX要求が完了すると、2つのdiv.alert
要素がドキュメント本文に追加されます。
以下のテストでは、ボタンを押してリクエストをトリガしますが、その後テストで期待されるdiv要素を探してドキュメントを照会すると、リクエストを見つけることができません。私はテストがAJAX呼び出しが終了する前に存在するドキュメントの "古い"バージョンを照会していると思います。私の質問は:どのようにの後に存在する文書のバージョンにアクセスすることができますAJAX呼び出しが終了し、要素を追加しますか?
context("when visited on the 'new' page", function(){
before(function(){ return browser.visit('/'); });
before(function(){ return browser.clickLink('new'); });
context("when submitted with invalid values", function(){
before(function(){
return browser.pressButton("Submit")
})
it("flash should include error messages", function(){
var messages = browser.queryAll(".alert")
console.log(messages)
expect(messages.length).toEqual(2)
})
})
})
注:私はzombie.jsテストに探して、そしてasync
とawait
の使用を見出すが、私は私の.jsファイルにそれらのキーワードを使用しようとすると、それはそれらを認識しませんされています。これは別の問題かもしれませんが、ソリューションに非同期/待機が必要な場合、mochaでこれらのキーワードを認識できるようにするにはどうすればよいですか?
を呼ぶだろう 'の前に' あなたの '非同期/ await'はES7機能です。あなたはおそらくそれを何とかする方法を見つけることができます。しかし、私はそれがあなたを助ける方法を見ません。問題は、あなたのテストがDOMが変更されるのを待つことです。私はゾンビをまったく使用しませんが、ちょうどこれを行う関数が付いたSeleniumを使用します。ゾンビに同等の機能がない場合は、DOMを常にポーリングできます。 – Louis
セレンのお薦めをありがとう – s2t2
私の以前のコメントを修正する必要があります: 'async/await'はES7(=== ES2016)にしませんでした。 ES2016は昨日のように承認されましたが(私は今学んだことですが)、「async/await」をカットしました。それは言語の次のリビジョンの一部であるかもしれません。 – Louis