#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. Это говорит скорее о мудрости , чем о механике использования этого параметра. Для меня много значит, что разработчики посчитали это хорошим вариантом по умолчанию, и это укрепляет мое решение перенять эту практику.