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

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

但是,对于minitest,您无法传递第二个参数来指示selenium执行测试.

有没有人对如何做到这一点有任何想法?

解决方法

什么:js flag正在做的很简单.它将当前驱动程序从默认(机架测试)切换到支持javascript执行的另一个驱动程序(selenium,webkit).你可以用minitest做同样的事情:
  1. require "minitest/autorun"
  2.  
  3. class WebsiteTest < MiniTest::Unit::TestCase
  4. def teardown
  5. super
  6. Capybara.use_default_driver
  7. end
  8.  
  9. def test_with_javascript
  10. Capybara.current_driver = :selenium
  11. visit "/"
  12. click_link "Hide"
  13. assert has_no_link?("Hide")
  14. end
  15.  
  16. def test_without_javascript
  17. visit "/"
  18. click_link "Hide"
  19. assert has_link?("Hide")
  20. end
  21. end

当然,为方便起见,您可以将其抽象为模块:

  1. require "minitest/autorun"
  2.  
  3. module PossibleJSDriver
  4. def require_js
  5. Capybara.current_driver = :selenium
  6. end
  7.  
  8. def teardown
  9. super
  10. Capybara.use_default_driver
  11. end
  12. end
  13.  
  14. class MiniTest::Unit::TestCase
  15. include PossibleJSDriver
  16. end
  17.  
  18. class WebsiteTest < MiniTest::Unit::TestCase
  19. def test_with_javascript
  20. require_js
  21. visit "/"
  22. click_link "Hide"
  23. assert has_no_link?("Hide")
  24. end
  25.  
  26. def test_without_javascript
  27. visit "/"
  28. click_link "Hide"
  29. assert has_link?("Hide")
  30. end
  31. end

猜你在找的Ruby相关文章