簡體   English   中英

Capybara 測試不起作用,而實際應用程序運行良好。 Rails 5 中的 React 前端

[英]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.

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