Как я могу заставить Rspec2 поддерживать модели и спецификации по другому пути? - PullRequest
2 голосов
/ 10 февраля 2011

У меня есть два проекта rails, которые используют одни и те же модели (общедоступный сайт и сайт администратора) через подмодуль git.

В моем файле application.rb я добавил следующую строку: config.autoload_paths += ["shared/models", "shared/lib"], и это прекрасно работает при запуске приложений Rails, однако, когда я пытаюсь запустить спецификации, кажется, сначала загружается файл routes.rb, а затем файл application.rb - это означает, что спецификации были ошибки - особенно с devise.

В дополнение к этому, Rspec не будет забирать спецификации в пути shared / spec - есть ли способ добавить этот путь в задачу spec, например, мне нужно настроить собственный файл rspec.rake, дублирующий задачу или что-то в этом роде как это?

Приветствия

1 Ответ

3 голосов
/ 15 февраля 2011

Чтобы загрузить общие / модели, вам нужно добавить их в config.autoload_paths.

Затем, чтобы загрузить свою спецификацию из общих / спецификаций, добавьте ее в spec_helper.rb:


shared_model_specs = config.filename_pattern.split(",").collect do |pattern|
  Dir["shared/spec/models/#{pattern.strip}"]
end.flatten
config.files_to_run.concat shared_model_specs 

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


config.include RSpec::Rails::ModelExampleGroup, :type => :model, :example_group => {
  :file_path => config.escaped_path(%w[spec shared models])
}  

PS: Я бы порекомендовал поставитьобщий код или модули в драгоценный камень, а затем использовать их в двух проектах.Таким образом, гем содержит свои собственные тесты, и ссылки на него из нескольких проектов намного проще и организованы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...