簡體   English   中英

在Capybara集成測試(和Selenium Webdriver)過程中,設計用戶創建失敗

[英]Devise user creation fails during Capybara integration testing (and Selenium webdriver)

我正在嘗試在集成測試期間創建一個用戶以用於某些操作。 我正在用:confirmable設計。 代碼如下:

user = User.create({username: "user1", password: "pass1234", password_confirmation: "pass1234", email: "test@email.com"})
user.confirm!
fill_in "Username", :with => user.username
fill_in "Password", :with => user.password
click_button "Sign in"

問題是每次我嘗試登錄都會失敗。 關於用戶創建沒有任何錯誤,但是由於某些原因,當我嘗試登錄時,用戶似乎並沒有“在那兒”。 嘗試登錄時,我只會得到“無效的用戶名或密碼”。這似乎與Capybara / Selenium Webdriver可能沒有在嘗試登錄之前未正確等待數據庫操作有關。如果是這樣,我該如何測試或修復它?

在集成測試期間甚至試圖插入數據庫是否“錯誤”?

我不使用devise自己,因此無法真正評論您遇到的問題的具體細節,但是這個問題引起了我的注意:

在集成測試期間甚至試圖插入數據庫是否“錯誤”?

是的,我通常會這樣說。

集成測試應該從用戶的角度測試代碼:

  • 期望應該僅取決於用戶實際看到的內容
  • 動作應僅對應於用戶實際可以執行的操作

在數據庫中插入內容超出了用戶可以使用的操作范圍。 也許是用於單元測試,而不是集成測試。

話雖如此,您可能會爭辯說,為數據庫設置種子數據是該規則的一個例外,因為您正在為測試設置上下文(請參見下面的評論)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM