使用水豚與Poltergeist點擊具有data-method='delete'
屬性的鏈接。水豚與Poltergeist - 與數據方法的鏈接:刪除或:修補程序不觸發
水豚移動就好像鏈接被成功點擊一樣,但沒有實際的請求命中服務器。
測試日誌顯示導向顯示頁面的所有步驟...但沒有請求適當的鏈接。
它發現沒有問題的正確鏈接,並認爲它被點擊了。
我應該指出這不是一個:遠程鏈接,它在發展
任何想法的作品?
下面的代碼:
scenario "deletes a document", js: true do
set_auto_accept_for_alert_and_confirm_dialogs
sign_in_admin admin
visit admin_dashboard_path
find(:css, '#mediaDropdown').trigger('click')
find(:css, '#documents_link').click
find(:css, "#delete_link_#{document.id}").click
expect(current_path).to eq admin_documents_path
expect(Document.all.size).to eq 0
expect(page).to have_content(I18n.t('notices.admin.documents.destroy.success'))
end
我已經延長了等待時間,增加了一個長時間的睡眠&使用byebug
立即「刪除」鏈接&試圖調用它在控制檯前。
水豚(2.10.1) - 鬼驅人(1.11.0) - 鐵軌(4.2.7.1) - jQuery的導軌(4.2.1) - turbolinks(5.0.1)
你點擊鏈接後立即在測試中做什麼?顯示你的測試代碼。此外,測試模式會連接JS資產,這意味着錯誤可能會阻止後期資產運行,因此請確保在加載頁面時,在開發模式下控制檯中不顯示任何JS錯誤。 –
感謝您的快速回復。我已經添加了測試。在開發或生產模式中沒有Javascript錯誤。 – Bob
已經在其上發生了delete_link的url已經是admin_documents_path了嗎?如果是這樣,那麼我假設你的測試在Document.all.size上失敗了?你的測試在編寫方式上有幾個問題。首先 - 不要使用current_path和eq來斷言 - 而是使用'expect(page).to have_current_path(admin_documents_path)'。其次 - 你需要交換最後兩個期望的順序。您不知道文檔被刪除,直到顯示消息,因此在驗證計數之前先檢查該文檔(Document.all.size不會等待,因此您需要知道在計數之前它已被刪除) –