Используйте помощники запросов вне спецификаций контроллера

Я хотел бы включить помощники запросов (из ActionDispatch::Integration::RequestHelpers [ApiDock], например методы post и xhr) также в некоторых спецификациях, не входящих в спецификации моего контроллера. Проблема в том, что эти хелперы запросов включены только в спецификацию/контроллер и при описании контроллера. Что я должен включить/требовать в этих спецификациях? Я использую RSpec 2 и Rails 3.


person Zardoz    schedule 17.11.2010    source источник


Ответы (2)


Я только что решил проблему, включив приведенный ниже код в свой помощник по принятию. Если вы не Steak, просто поместите его в spec helper или запросите откуда-то еще. Методы post и xhr теперь доступны в этой спецификации независимо от того, в какой она спецификации или в каком каталоге вы находитесь.

Код получен из RSpec::Rails::RequestExampleGroup.

RSpec::Core::ExampleGroup.class_eval do
  include ActiveSupport::Concern
  include ActionDispatch::Integration::Runner
  include RSpec::Rails::BrowserSimulators

  def app
    ::Rails.application
  end

  def last_response
    response
  end
end
person Zardoz    schedule 17.11.2010

Я знаю, что прошло 4 года, и многое, конечно же, изменилось, но поскольку я наткнулся на этот вопрос, когда искал, как заставить другие тесты вести себя как тесты контроллера (и, следовательно, иметь методы post и get и т.п.), я хотел указать на это. решение, которое работает с RSpec 3: если вы добавите это в spec_helper

 config.include RSpec::Rails::RequestExampleGroup, type: :request, example_group: { file_path: /spec\/(api|integration)/

он сделает так, чтобы все тесты по заданному пути поддерживали методы контроллера.

person wiz    schedule 14.11.2014