我的项目使用Rails 3和RSpec和Capybara进行测试。
我想支持没有javascript的访问者,所以我在资源路由中添加了一个“删除”成员。我的非js链接看起来像/ posts / 3 / delete。然后,它们向用户呈现一个表单,然后对destroy操作发出post请求。我正在使用额外的javascript来删除/删除,以便链接仍然可以正常启用它们。
我遇到的问题是,Capybara希望使用HTTP DELETE请求关注/ posts / 3 / delete链接,但它不支持剥离/删除的javascript。有没有办法告诉Capybara只关注HTTP GET的所有链接?
答案 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