Я хотел бы включить помощники запросов (из ActionDispatch::Integration::RequestHelpers [ApiDock], например методы post и xhr) также в некоторых спецификациях, не входящих в спецификации моего контроллера. Проблема в том, что эти хелперы запросов включены только в спецификацию/контроллер и при описании контроллера. Что я должен включить/требовать в этих спецификациях? Я использую RSpec 2 и Rails 3.
Используйте помощники запросов вне спецификаций контроллера
Ответы (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
Я знаю, что прошло 4 года, и многое, конечно же, изменилось, но поскольку я наткнулся на этот вопрос, когда искал, как заставить другие тесты вести себя как тесты контроллера (и, следовательно, иметь методы post
и get
и т.п.), я хотел указать на это. решение, которое работает с RSpec 3: если вы добавите это в spec_helper
config.include RSpec::Rails::RequestExampleGroup, type: :request, example_group: { file_path: /spec\/(api|integration)/
он сделает так, чтобы все тесты по заданному пути поддерживали методы контроллера.