Конфигурация Rspec 2: типы типов - PullRequest
28 голосов
/ 04 июня 2011

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

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

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

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

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

Ответы [ 2 ]

27 голосов
/ 27 октября 2011

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

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

: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) именем папки, в которой находятся ваши интеграционные тесты.

4 голосов
/ 31 августа 2013

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

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