2012-08-08 119 views
3

這個問題的幾個變種已經被問到了,而且我肯定從這個主題的閱讀中學到了東西,但是大多數答案似乎並不直接適用於這種情況,或者涉及使用Rspec或黃瓜的解決方案。使用Capybara和Minitest來測試JavaScript

我目前正在使用Minitest和水豚的測試套件。如果可能的話,我不想引入太多的其他寶石,但如果它們是輕量級的,我會接受它,因爲測試已經需要一段時間才能運行。

Rspec有:js => true和黃瓜有@javascript,但minitest似乎沒有這樣的東西。然後,自然的解決方案將是切換驅動程序,並執行:Capybara.current_driver = :selenium,但是當我這樣做時,它不起作用,並且我得到2個錯誤(每個啓用js的測試都有一個錯誤)。

我的問題是這樣的:爲什麼我會收到這些錯誤,以及如何進行一些基本的JavaScript測試工作?這裏的都是錯誤的:

Component returned failure code: 0x804b0012 (NS_ERROR_UNKNOWN_PROTOCOL) [nsIWebNavigation.loadURI] 
    Exception `Selenium::WebDriver::Error::UnknownError' at: 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/response.rb:52:in `assert_ok' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/response.rb:15:in `initialize' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:59:in `new' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:59:in `create_response' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/default.rb:65:in `request' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/http/common.rb:40:in `call' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:598:in `raw_execute' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:576:in `execute' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/remote/bridge.rb:99:in `get' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/selenium-webdriver-2.25.0/lib/selenium/webdriver/common/navigation.rb:14:in `to' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/selenium/driver.rb:36:in `visit' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/session.rb:157:in `visit' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/dsl.rb:161:in `visit' 
    test/integration/resource_access_test.rb:22:in `block (2 levels) in <top (required)>' 

而這裏的其他錯誤:

undefined method `[]' for nil:NilClass 
    Exception `NoMethodError' at: 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/rack-test-0.6.1/lib/rack/test.rb:171:in `env_for' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/rack-test-0.6.1/lib/rack/test.rb:56:in `get' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/rack_test/browser.rb:62:in `process' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/rack_test/browser.rb:21:in `visit' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/rack_test/driver.rb:32:in `visit' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/session.rb:157:in `visit' 
    /Users/epithelialbiology/.rvm/gems/ruby-1.9.2-p320/gems/capybara-1.1.2/lib/capybara/dsl.rb:161:in `visit' 
    test/integration/resource_access_test.rb:40:in `block (2 levels) in <top (required)>' 

有誰知道什麼可以怎麼回事,以及如何解決這個問題?

回答

2

嘗試下面的語法來切換水豚司機:

Capybara.current_driver = Capybara.javascript_driver 
+0

這不會叉勺工作。水豚打開Firefox頁面,但它是空白的。它超時:無法在60秒內獲得穩定的Firefox連接(127.0.0.1:7055)。這整個minitest堆棧還沒有準備好黃金時段。配置3天后,這是一個接一個的問題。我已經完成了其他錯誤,但是Spork內部的JavaScript測試,那是不可能的。 – AKWF 2013-05-02 19:34:52

相關問題