0

Karma を使用して Jasmine でフォームをテストしたいと思います。間違った認証情報を入力してボタンをクリックすると、適切なメッセージとともに通知が表示されます。残念ながら、カルマの iframe にはこの div が表示されないため、セレクターがどの要素にも一致しないため、次の期待は失敗します。

it('Testing a form', function () {
     browser().navigateTo('/index.html');
     input('firstName').enter('Wrong');
     input('lastName').enter('Wrong');
     element(':button.btn').click();
     expect(element('.msg h1').text()).toMatch('Wrong Credentials');
}

私が得ているエラーは

セレクター .msg h1 はどの要素とも一致しませんでした。

クリックイベントの後にフォームを表示するために sleep(10) または pause() を使用すると、メッセージが表示されないため、セレクターがどの要素にも一致しません。何かアイデアはありますか?どうもありがとうございました!

4

2 に答える 2

1

1. $compile サービスを使用してテスト スクリプト内に同じフォーム要素を作成し、テキスト ボックスの値を設定して $('button class').click(); を押すことでテストできます。そして、エラーまたは成功メッセージを表示しているメソッドにスパイを設定します。メッセージが表示されているかどうかを理解できるようにします。2. フォーム データから JSON を作成し、それを検証するか、そのフォーム データを任意の $scope.variable_name に割り当てる必要があります。検証関数を呼び出す前に、その変数に間違った入力を明示的に設定します。次に、ボタン クリックまたは $scope.$ で関数を呼び出します。エミット('クリック'); エラーメッセージを表示するために使用されるメソッドにスパイを設定します。

于 2015-04-20T09:13:55.543 に答える
0

これを試すことができます。

変化するexpect(element('.msg h1').text()).toMatch('Wrong Credentials');

expect(element('[ng-view] .msg h1').text()).toMatch('Wrong Credentials');
于 2013-10-28T08:57:07.587 に答える