有很多关于如何使用 Capybara/Selenium/ 执行 javascript 测试的示例规范 您可以在其中编写如下测试:
it "does something", :js => true do
...
end
但是对于 迷你测试 您不能传递第二个参数来指示 selenium 执行测试。
有人对如何做到这一点有任何想法吗?
最佳答案
什么:js
flag 做的很简单。它将当前驱动程序从默认(机架测试)切换到另一个支持 javascript 执行(selenium、webkit)的驱动程序。你可以在 minitest 中做同样的事情:
require "minitest/autorun"
class WebsiteTest < MiniTest::Unit::TestCase
def teardown
super
Capybara.use_default_driver
end
def test_with_javascript
Capybara.current_driver = :selenium
visit "/"
click_link "Hide"
assert has_no_link?("Hide")
end
def test_without_javascript
visit "/"
click_link "Hide"
assert has_link?("Hide")
end
end
当然,为方便起见,您可以将其抽象为一个模块:
require "minitest/autorun"
module PossibleJSDriver
def require_js
Capybara.current_driver = :selenium
end
def teardown
super
Capybara.use_default_driver
end
end
class MiniTest::Unit::TestCase
include PossibleJSDriver
end
class WebsiteTest < MiniTest::Unit::TestCase
def test_with_javascript
require_js
visit "/"
click_link "Hide"
assert has_no_link?("Hide")
end
def test_without_javascript
visit "/"
click_link "Hide"
assert has_link?("Hide")
end
end
关于ruby-on-rails - 你如何使用 Minitest、Capybara、Selenium 执行 javascript 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5655154/