Конфигурация Rspec 2: типы типов

В моем spec_helper.rb у меня есть

config.include Devise::TestHelpers, :type => :controller

так что я могу фактически протестировать свои контроллеры, которые требуют аутентификации пользователя. Тем не менее, спецификация для того же класса в запросах также должна войти в систему, иначе тесты не пройдут. я пробовал

config.include Devise::TestHelpers, :type => :request

но это тоже не работает. Кажется, я не могу найти, какие параметры типа я могу передать в методы включения или расширения rspec. Я предполагаю, что :model и :view будут там, но в остальных я совершенно не уверен. Что я должен использовать, чтобы моя спецификация запросов могла пройти, и есть ли список различных типов для: type?


person Aaron    schedule 03.06.2011    source источник
comment
У меня такой же вопрос. Вы когда-нибудь разбирались?   -  person Karl    schedule 13.08.2011


Ответы (2)


Этот коммит должен помочь прояснить параметр :type.

https://github.com/rspec/rspec-rails/commit/fc5cdbb603f0e66f9f3d19a0a60a772e122

:type => :request действителен, поэтому я не уверен, почему ваши тесты терпят неудачу.

В каком каталоге хранятся ваши интеграционные тесты? Как правило, они расположены в spec/requests или, возможно, spec/integration.

Вы можете использовать другую опцию, чтобы указать, когда включать Devise::TestHelpers; вариант :example_group:

config.include Devise::TestHelpers, :example_group => {
  :file_path => config.escaped_path(%w[spec (requests|integration)])
}

Теперь Devise::TestHelpers будут включены в группы примеров, файлы которых находятся в пределах указанных путей.

Обязательно замените член массива (requests|integration) именем папки, в которой находятся ваши интеграционные тесты.

person simeonwillbanks    schedule 26.10.2011
comment
Превосходно. Это поможет включить файл макросов для нового каталога spec/features, который любит использовать Capybara 2.x. - person sockmonk; 13.02.2013
comment
config.escape_path не работает в последней версии rspec, которую я использовал config.include RakeTestHelper, :example_group => { :file_path => %r(spec/api) } - person Calin; 01.05.2014

Может быть, уже слишком поздно, но для тех, кому это нужно, изменение типа на :feature у меня сработало:

config.include Devise::TestHelpers, :type => :feature
person Alter Lagos    schedule 30.08.2013