防止Capybara跟随:method => :删除链接

时间:2011-08-02 02:48:00

标签: ruby-on-rails-3 capybara

我的项目使用Rails 3和RSpec和Capybara进行测试。

我想支持没有javascript的访问者,所以我在资源路由中添加了一个“删除”成员。我的非js链接看起来像/ posts / 3 / delete。然后,它们向用户呈现一个表单,然后对destroy操作发出post请求。我正在使用额外的javascript来删除/删除,以便链接仍然可以正常启用它们。

我遇到的问题是,Capybara希望使用HTTP DELETE请求关注/ posts / 3 / delete链接,但它不支持剥离/删除的javascript。有没有办法告诉Capybara只关注HTTP GET的所有链接?

1 个答案:

答案 0 :(得分: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