Как автоматически загрузить spec_helper.rb в RSpec 2

#ruby #rspec #rspec2

#ruby #rspec #rspec2

Вопрос:

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

В приложениях Rails для этого используется файл с именем spec/spec_helper.rb . Меня раздражает то, что в типичной среде Rails вам приходится требовать этот файл spec_helper.rb в каждом файле, содержащем примеры для его загрузки. В прошлом у меня было много проблем с этим, связанных с изменением путей загрузки и относительных путей запроса внутри файлов примеров.

Теперь для моих драгоценных камней я хотел бы иметь способ просто указать RSpec, чтобы потребовать файл spec_helper.rb перед загрузкой любого из файлов примеров. Независимо от того, вызываю ли я исполняемый файл rspec или задачу rake spec, которую я могу определить в своем Rakefile.

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

Есть ли более удобный способ добиться этого?

Ответ №1:

В RSpec 2 /spec папка всегда автоматически находится на вашем пути загрузки. Это означает, что все, что вам нужно, это:

 require 'spec_helper'
  

в верхней части ваших файлов спецификаций. Это будет загружаться всегда /spec/spec_helper.rb , и это минимум, с которым вы сможете справиться.

Это означает, что вам не нужен ужасный подход, такой как:

 require File.join(File.dirname(File.dirname(__FILE__)), 'spec_helper.rb')
  

(который необходимо обновить для разных уровней вложенности).

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

Комментарии:

1. @afrikfr: Чувак, спасибо тебе за совет по поводу —require! Мне больше никогда не придется вводить эту чертову строку! (me запускает, чтобы удалить кучу шума)

Ответ №2:

--require spec_helper Строка автоматически добавляется в файл .rspec для RSpec 3.0, когда вы это сделаете rspec --init .

Комментарии:

1. Это самый чистый ответ, IMO

2. Это говорит скорее о мудрости , чем о механике использования этого параметра. Для меня много значит, что разработчики посчитали это хорошим вариантом по умолчанию, и это укрепляет мое решение перенять эту практику.