Предотвращение Capybara от следующего: method =>: удалить ссылки - PullRequest
0 голосов
/ 02 августа 2011

Мой проект использует Rails 3 и RSpec и Capybara для тестирования.

Я хочу поддерживать посетителей без javascript, поэтому я добавил элемент 'delete' в мои маршруты ресурсов. Мои не-js ссылки выглядят как / posts / 3 / delete. Затем они представляют форму пользователю, который затем отправляет запрос на действие уничтожения. Я использую дополнительный javascript для удаления / удаления, чтобы ссылки по-прежнему работали корректно для тех, у кого он включен.

Проблема, с которой я столкнулся, заключается в том, что Capybara хочет переходить по ссылкам / posts / 3 / delete с помощью HTTP-запроса DELETE, но не поддерживает JavaScript, который удаляет / delete. Есть ли способ, с помощью которого я могу сказать Capybara просто следовать всем ссылкам с помощью HTTP GET?

1 Ответ

0 голосов
/ 02 августа 2011

Хотя это еще не вариант, вы можете просто включить или выключить этот патч, так что я решил эту проблему на данный момент.

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

...