Как загрузить spec_helper.rb автоматически в RSpec 2 - программирование
Подтвердить что ты не робот

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

При разработке драгоценных камней в 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 требует всех файлов примеров вручную, но я также хотел бы избежать дополнительного обслуживания этого подхода.

Есть ли лучший способ сделать это?

4b9b3361

Ответ 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, который потребует этот файл в каждом spec файле, без инструкции для инструкции вверху.

Ответ 2

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