Minitest/Capibara:切换到JS驱动程序时,绿色测试变为红色

Minitest/Capybara: Green test turns red when switching to JS driver

本文关键字:测试 红色 驱动程序 Capibara JS Minitest      更新时间:2023-09-26

我有一个绿色测试:

test "study page & question screen" do
    assert_title "Study | Word Up"
    assert page.has_selector?('h3', text: "STUDY"), "Panel title missing or wrong"
    assert page.has_selector?("div.progress-bar"), "Progress bar missing or with wrong class"
end

16:24:23 - INFO - Running: test/integration/study/study_test.rb
Started
StudyTest
test_answer_screen                                              PASS (0.98s)
test_study_page_&_question_screen                               PASS (0.27s)
Finished in 1.26314s
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips

因为我在同一页面上有很多(页面上的)Javascript代码,我也想测试它们。因此,我告诉Capybara使用能够使用Javascript的驱动程序。例如webkit,但我也尝试过poltergeist和selenium。

test "study page & question screen" do
    Capybara.javascript_driver = :webkit
    Capybara.current_driver = Capybara.javascript_driver
    assert_title "Study | Word Up"
    assert page.has_selector?('h3', text: "STUDY"), "Panel title missing or wrong"
    assert page.has_selector?("div.progress-bar"), "Progress bar missing or with wrong class"
end

考试突然变红了。虽然我除了换司机之外什么都没做。

16:28:21 - INFO - Running: test/integration/study/study_test.rb
Started
StudyTest
test_answer_screen                                              PASS (1.12s)
test_study_page_&_question_screen                              ERROR (5.11s)
Capybara::ExpectationNotMet:         Capybara::ExpectationNotMet: expected "" to include "Study | Word Up"

这怎么可能?

经过一些测试,我认为您正在访问设置方法中的根路径。所以你的测试访问了根路径,然后改变了Capybara驱动程序。尝试更改驱动程序,然后访问根路径。

基本上,添加

visit root_path

之后

Capybara.javascript_driver = :webkit
Capybara.current_driver = Capybara.javascript_driver

此操作失败:

setup do
    visit root_path
end
test "study page & question screen" do
    Capybara.javascript_driver = :webkit
    Capybara.current_driver = Capybara.javascript_driver
    assert_title "Study | Word Up"
end

通过:

setup do
end
test "study page & question screen" do
    Capybara.javascript_driver = :webkit
    Capybara.current_driver = Capybara.javascript_driver
    visit root_path
    assert_title "Study | Word Up"
end