2

角度のある単一ページアプリケーションの e2e テストに分度器ジャスミンを使用しています。次のコード スニペットを検討してください。

describe('Search', function(){
  it('Should Open the search modal popup', function() {
     //code
     expect(modalOpened).toBe(true)
  })

  it('Search should return results', function(){

  })
  it('Search should not return results', function() {

  })
})

上記の例では、モーダル自体が開いていないため、失敗するとShould Open the search modal popup以下の仕様も失敗します。したがって、以下の仕様を実行しても意味がありません。最後の 2 つの仕様を条件付きで実行できますか? 最初の仕様が合格した場合と同様に、以下の仕様が実行されます。Should Open the search modal popupShould Open the search modal popup

4

1 に答える 1

1

単体テストと E2E テストが混同されているようです。Selenium のサブセットである分度器は、統合またはエンド ツー エンド テストのみを実行するためのものです。各 E2E 仕様では、コードのユニットを統合し (統合テスト)、選択したブラウザーで各機能を実行できるかどうかをテストする必要があります (検索をクリックすると、モーダルが結果とともに表示されます)。さらに、modalOpened のプロパティが true であることを確認するのではなく、モーダルが css に、className などによって、結果とともに存在することを確認する必要があります。

幸いなことに、Protractor は非同期の Promise ベースのイベントを提供します。検索アイコンをクリックすると、次のことができます。

it('Should Open the search modal popup and show results', function() {

    element(by.id('search')).click().then(
        function() {
             // now check for modal to be displayed

             // now check results are displayed
        }
    );
});

ソース:

https://angular.github.io/protractor/#/api?view=webdriver.WebElement.prototype.click

https://angular.github.io/protractor/#/api?view=ElementFinder.prototype.then

于 2016-04-27T07:46:25.177 に答える