私は分度器と一般的な約束にはかなり慣れていません。Promise を返すことや、キューに入れられたアクションの結果についての投稿はたくさんありますが、どれも私にはあまり意味がありません。簡単な質問です!
angularjs Web サイト用の分度器テストを作成しようとしています。
私は主にブートストラップと角度を使用しています。トースターやブートストラップモーダルなどの時折の角度アドオンを除いて、他のサードパーティのライブラリは使用していません。
テストのアサーション部分に到達する前に、いくつかの「配置手順」があります。まあ言ってみれば :
- a) 人がログインする
- b) ユーザーがオプション フォームにアクセスします (外部要因によって、画面に既に表示されている場合と表示されていない場合がありますが、存在しない場合は、ボタンを押して開くことができます)。
- c) ユーザーがオプション フォームでアクションを実行します。
- d) フォームのテキスト ボックスに正しい値が含まれていることを確認します。
フォームが既に画面に表示されている場合は、テストに簡単に合格できますが、最初にフォームがアクティブかどうかを確認し、アクティブでない場合はボタンをクリックする必要があるステップ b) で行き詰まります。ステップc。
私は次のように isDisplayed から約束を返そうとしました:
//
// Is the user settings form active at the mo?
//
function _isUserSettingsFormActive()
{
var result = element(by.id(logoutFormID)).isDisplayed;
return result;
}
しかし、_isUserSettingsFormActive() で .then を呼び出すと、次のエラーが発生します。
[31mTypeError: undefined is not a function[0m
ただし、_isUserSettinsFormActive() の結果を出力すると、以下が表示されるので、何かを返していることがわかります。
function () {
return self.elementArrayFinder_[fnName].
apply(self.elementArrayFinder_, arguments).toElementFinder_();
}
私がやりたいことは、アサートを実行する前にアイテムが存在するかどうかを確認し、それに基づいて行動することだけです。
このコードはテスト スーツ全体の多くの場所で使用されるため、関数内にある必要があります。それは「期待」そのものではなく、テストに合格するためにブラウザーをセットアップするためのアクションが必要な場合と必要でない場合があるステップです。