chr*_*ris 7 selenium ruby-on-rails minitest capybara ruby-on-rails-3
有很多关于如何使用Capybara/Selenium/Rspec执行javascript测试的示例,您可以在其中编写如下测试:
it "does something", :js => true do
...
end
Run Code Online (Sandbox Code Playgroud)
但是,对于minitest,您无法传递第二个参数来指示selenium执行测试.
有没有人对如何做到这一点有任何想法?
Sim*_*tsa 18
什么:js
标志正在做的是非常简单的.它将当前驱动程序从默认(机架测试)切换到支持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
Run Code Online (Sandbox Code Playgroud)
当然,为方便起见,您可以将其抽象为模块:
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
Run Code Online (Sandbox Code Playgroud)
嗯,我注意到文档中的几行似乎说上面的内容只能在 Rspec 中完成
但是,如果您使用RSpec 或 Cucumber,则可能需要考虑将速度更快的保留:rack_test
为default_driver
,并分别标记那些需要支持 JavaScript 的驱动程序using :js => true
或 的测试@javascript
。
归档时间: |
|
查看次数: |
5009 次 |
最近记录: |