Как автоматически загрузить spec_helper.rb в RSpec 2 - PullRequest
51 голосов
/ 21 февраля 2011

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

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

Ответы [ 2 ]

112 голосов
/ 24 февраля 2011

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

37 голосов
/ 27 июня 2014

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

...