2011-08-02 31 views
0

我的項目是使用Rails 3和RSpec和Capybara進行測試。從以下方法防止水豚:方法=>:刪除鏈接

我想支持沒有javascript的訪問者,所以我在資源路由中添加了一個'刪除'成員。我的非js鏈接看起來像/ posts/3/delete。然後這些表單向用戶呈現,然後向摧毀操作發出發佈請求。我正在使用額外的JavaScript去除/刪除,以便那些打開它的人仍然可以正常工作。

我遇到的問題是,水豚想要使用HTTP DELETE請求來關注/ posts/3/delete鏈接,但它不支持刪除/刪除的javascript。有沒有一種方法可以告訴Capybara只需遵循HTTP GET的所有鏈接?

回答

0

雖然它不是一個選項,你可以簡單地打開或關閉,但這個補丁是我現在最終解決這個問題的方法。

class Capybara::RackTest::Driver < Capybara::Driver::Base 
    class Capybara::RackTest::Node < Capybara::Driver::Node 
    def click 
     if tag_name == 'a' 
     driver.follow(:get, self[:href].to_s) 
     elsif (tag_name == 'input' and %w(submit image).include?(type)) or 
     ((tag_name == 'button') and type.nil? or type == "submit") 
     Capybara::RackTest::Form.new(driver, form).submit(self) 
     end 
    end 
    end 
end 

編輯:看來,這將是改變了版本這樣的工作方式2. https://github.com/jnicklas/capybara/issues/184#issuecomment-1940520