![](/img/trans.png)
[英]How should I approach adding a react front-end to a web app built with rails?
[英]Capybara tests don't work, while actual app works fine. React front-end in Rails 5
Specs : Rails 5.2, Ruby 2.5.1, Yarn 1.91.1, React-Rails 2.6.0, selenium-webdriver 3.14, chromedriver 77, capybara gem 3.29, Ubuntu 18.04
問題:我在 Rails 應用程序中使用反應組件創建了一份問卷,該應用程序在開發模式下運行時有效。 我可以單擊是或否按鈕,然后回調 function 呈現新的問題文本。 但是我的 selenium 集成測試並沒有選擇這個。 object page
的第一個問題仍然有相同的文本,所以我收到這樣的錯誤
Failure/Error: expect(question.text).to include('last question') expected "first question" to include "last question"
測試本身在 features/questionnaire.rb 中看起來像這樣
RSpec.feature "Onboarding Questionnaire", type: :feature, js:true do
(...)
it...
question = find('h3.question')
expect(question.text).to include('first question')
yes = find('#yes')
yes.click
sleep 5
question = find('h3.question')
expect(question.text).to include('last question')
問題出現在yes.click
之后。 起初我以為是我的動畫導致了這個問題,但我刪除了這些,它只是在我的回調 function 中使用了 setState。
這是我的反應回調 function
saveAnswer(e) {
questionnaire = this
++questionnaire.state.page
questionnaire.setState({page: questionnaire.state.page})
}
這是我的驅動程序配置Capybara.javascript_driver =:selenium_chrome_headless
現在使用sleep
按需要工作。 這是我所做的更改。
1)我刪除了已棄用的 gem chromedriver-helper
並將其替換為webdrivers
2) 在 rails_helper.rb 文件中添加了require 'webdrivers'
。
3)在我的react代碼中發現錯誤(未顯示在開發中或未登錄chrome webdriver)的questionnaire = this
我更改為var questionnaire = this
。
現在使用selenium_chrome_headless
可以很好地通過集成測試
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.