2016-04-27 96 views
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失敗,則下面Should Open the search modal popupShould Open the search modal popup規格也將失敗,因爲模態本身是不開放的。所以運行下面的規格沒有意義。我可以有條件地運行最後兩個規格嗎?只有在第一個規範已通過時,纔會運行以下規範。

回答

1

它看起來像你正在得到單元測試和E2E測試混合起來。量角器是Selenium的子集,僅用於運行集成或端到端測試。每個E2E規範應該將您的代碼單元集成在一起(因此,集成測試),並測試您選擇的瀏覽器是否允許每個功能發生(例如,單擊搜索和帶有結果的模式顯示)。此外,你不會檢查modalOpened屬性是否爲真,你會檢查以確保模態存在於CSS中,通過className或其他,以及你的結果。

幸運的是,量角器提供了異步的基於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

+0

測試是否模態可見不是端對端測試的一部分? – Wishnu

+0

'你不會檢查一個modalOpened屬性是真實的---- ---- 其實'modalOpened'只是一個javascript變量等於'element(by.css('xx'))' – Wishnu

+0

你的測試正在測試功能而不是如何實現該功能。如果你決定交換你的模式庫,那麼如果你正在測試你的CSS而不是JS變量,你的測試仍然可以工作。但是,如何實施測試對於確保您實施測試並不重要。只要您遵循量角器語法,並且實際上在測試模態演出時預期您是金牌。 – colincclark