ここにはsimilar questionsがあることは知っていますが、私の人生には意味がありません。分裂器で約束を待つ必要はありますか?
ここでは、ボタンをクリックしてURLを確認する必要がある例を示します。
私の最初に考えたのは、私がインクルードが期待.clickについてその約束が、何を扱う知っている私は
element(by.id('button')).click();
expect(browser.getCurrentUrl()).toContain('asyncisconfusing');
としてそれを記述しているのですか?このように書く必要はありませんか?
element(by.id('button')).click().then(() => {
expect(browser.getCurrentUrl()).toContain('asyncisconfusing')
})
これは自動で行われますか?理論的には
コントロールフローがキューであるため、Gotcha。これらのタイミングの問題は、制御フローの外にあるものを実行することによって引き起こされます。あるいは、私たちが頼りにすべきではない何かのコントロールフローオーダーですか? – Dinny
@Dinny私たちはまだすべきですが、現実世界では、まだ特別な治療が必要な場合があります。たとえば、クライアントサイドのアニメーションやブラウザーが最大化されていない、ネットワークが遅い、または不安定な問題などが発生すると、テストフローが予想以上に自然なものにならない可能性があります。たとえば、テスト対象のAngularアプリケーションがありますが、コードベースのさまざまな部分で、たとえば、要素がクリック可能または表示可能になるのを待つ場合や、現在のURLを含むようにbrowser.wait()を追加する必要があった場合予想される部分文字列。いくつかの場所では、 'click()。then()'部分も持っています。 – alecxe
それは理にかなっています。私たちは約束を明示的に解決し、可能ならば 'browser.wait()'を使うべきですか?問題に遭遇した場合は、これ以上のケースですか? – Dinny