有很多關於如何與水豚執行JavaScript的測試實例/硒/ Rspec的在其中你可以寫一個測試,像這樣:你如何使用Minitest,水豚,硒進行javascript測試?
it "does something", :js => true do
...
end
然而,隨着MINITEST你不能傳遞指示硒進行測試的第二個參數。
有沒有人有任何想法如何做到這一點?
有很多關於如何與水豚執行JavaScript的測試實例/硒/ Rspec的在其中你可以寫一個測試,像這樣:你如何使用Minitest,水豚,硒進行javascript測試?
it "does something", :js => true do
...
end
然而,隨着MINITEST你不能傳遞指示硒進行測試的第二個參數。
有沒有人有任何想法如何做到這一點?
嗯,我注意到在文檔幾行,似乎說的是,以上只能在Rspec的完成
但是,如果你正在使用RSpec的或黃瓜,你可能反而要考慮離開更快的:rack_test
作爲default_driver
,並且僅標記那些需要支持JavaScript的驅動程序using :js => true
或@javascript
的測試。
你不能指定:js =>真正的'''它「應該這樣做」做'''級別最小。只在主要的'''describe'''塊中。 – AKWF 2013-05-02 19:39:29
https://github.com/wojtekmach/minitest-metadata似乎已經爲此提供了一個解決方案。
你可以做到以下幾點:
describe "something under test" do
it "does not use selenium for this test" do
visit "/"
assert body.has_content?("Hello world")
end
it "does use selenium for this test", :js => true do
visit "/"
click_link "Hide" # a link that uses a javascript click event, for example
assert body.has_no_link?("Hide")
end
end
什麼: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
當然你也可以抽象成方便的模塊是:
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
只是更新一些信息,還有一個更強大的硒的webdriver與Ruby Bindings現在。
從終端快速地與軌道4和硒的webdriver測試JavaScript在Firefox上,你需要做以下4個步驟:
添加寶石到您的Gemfile
寶石「硒的webdriver 「 寶石 'MINITEST護欄'
安裝寶石
捆綁安裝
生成測試用例(參考文獻:Official Guide)
斌/導軌產生integration_test your_case_name
開始在你的測試用例編寫測試代碼。 其實你可以用Ruby寫沒有水豚,撰寫案例與水豚你可以參考Capybara at Github
MINITEST樣本:
# create a driver
driver = Selenium::WebDriver.for :firefox
# navigate to a page
driver.navigate.to 'url_to_page'
# get element with class box
box = driver.find_element(:css, '.box')
# check width
# get width by execute JavaScript
assert_equal 100, driver.execute_script('return $(arguments[0]).width()', box)
目前似乎缺乏與資源方面如何工作的與selenium webdriver,CI服務器(Jenkins)和Rails minitest順利,我創建了一個簡單的項目,並希望它可以幫助任何人快速輕鬆地入門: Rails Selenium Working Case
也欣賞那些讓我可以做出更好答案的評論。
這可能會在理論上回答這個問題,但最好將未來用戶的答案的基本部分包括在內,並提供鏈接以供參考。 [link-dominated answers](// meta.stackexchange.com/questions/8231)可能通過[link rot](// en.wikipedia.org/wiki/Link_rot)失效。 – Mogsdad 2015-08-28 17:40:49
只需鏈接到自己的圖書館不是一個好的答案。鏈接到它,解釋爲什麼它解決了這個問題,使用庫提供代碼來做到這一點,並放棄更好的答案。請參閱:[**什麼意思是「良好」自我推廣?**](http://meta.stackexchange.com/q/182212/200235) – durron597 2015-08-28 17:49:22
如何在Test :: Unit上使用Js [現已覆蓋文檔](https://github.com/jnicklas/capybara/blob/4161bbc560631e61e611d59bf797eeb59a6b1021/README.md#using-capybara-with-testunit)。說使用詳細的'Capybara.current_driver ='就像當前的答案。 – 2014-11-09 20:24:48