ruby-on-rails – 你如何使用Minitest,Capybara,Selenium进行javascript测试?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 你如何使用Minitest,Capybara,Selenium进行javascript测试?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
有很多关于如何使用Capybara / Selenium / Rspec执行 javascript测试的示例,您可以在其中编写如下测试:
it "does something",:js => true do
  ...
end

但是,对于minitest,您无法传递第二个参数来指示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相关文章