2016-06-17 34 views
0

我們有一個特點:直觀的行爲`page.status_code`

@smoke @acceptance 
Scenario: Home page is available 
    When I visit the home page url 
    Then I expect no error code 

隨着最後行實現:

Then(/^I expect no error code$/) do 
    expect(page.status_code).to eq 200 
end 

這有時會失敗。調試時我們發現以下情況:

  • 頁面本身總是200
  • 然而,在頁面內的一個資源有時204 (這將導致測試失敗)
響應響應

這表明page.status_code不等於請求的實際URL的狀態代碼,但可以設置爲頁面請求的任何資源(或可能是最後一個?)的狀態代碼。

這是正確的解釋,是否爲page.status_code的預期行爲?

注:

  • 我意識到204可能被理解爲成功,但這不是這個問題的 重點
+0

也在GH中提出https://github.com/teampoltergeist/poltergeist/issues/776 –

回答

0

STATUS_CODE返回觸發phantomjs的最後一個請求的結果onLoadStarted回調 - 這應該是頁面,或頁面啓動的可能的Ajax請求 - 它不應該是資源直接作爲頁面上的資源加載(img,javascripts,css等)。如果它是一種依賴性資產,那麼phantomjs就有一個問題,應該在該項目中報告一個可重現的例子。使用204響應報告什麼類型的請求?如果這是一個Ajax請求,那麼它就像預期的那樣 - 如果不是那麼它是一個幻影中的錯誤。注意:使用Capybara時檢查響應代碼確實是一種反模式,您通常應該堅持測試頁面上的可見更改。