относительный путь к файлу в RSpec - PullRequest
8 голосов
/ 19 февраля 2012

У меня есть тест RSpec для класса в /lib/classes, которому нужен доступ к zip-файлу (без загрузки). Файл хранится в /spec/fixtures/files/test.zip. Как ввести правильный путь, чтобы его независимость от среды, т. Е. Без абсолютного пути?

Ответы [ 3 ]

14 голосов
/ 03 сентября 2013

Rails.root даст вам корень приложения, поэтому

Rails.root.join "spec/fixtures/files/test.zip"

даст вам абсолютный путь к вашему файлу, независимо от местоположения приложения на вашем жестком диске.

4 голосов
/ 19 февраля 2012

Насколько я знаю (из просмотра каждого месяца или двух), нет лучшего способа построить что-то в spec_helper, которое использует значение __FILE__, чтобы найти путь к известному фрагменту контента, а затем создать свой собственный.помощники поверх этого.

Очевидно, что вы также можете использовать путь относительно __FILE__ в отдельном файле *_spec.rb.

3 голосов
/ 26 апреля 2017

Я недавно решил эту проблему, и вот что я придумал:

Определите постоянную в вашем spec_helper.rb (или эквивалентном), указывающем на корень RSpec:

RSPEC_ROOT = File.dirname __FILE__

Используйте эту переменную в ваших *_spec.rb (или эквивалентных) тестовых файлах:

require 'spec_helper'

File.open("#{RSPEC_ROOT}/resources/example_data.json")

Почему это решение?

  • В нем не используется местоположение тестового файлакоторый может быть изменен (spec_helper скорее всего нет)
  • Не требуется никаких дополнений для тестирования файлов, кроме уже существующих require 'spec_helper'
  • Это не зависит от Rails (в отличие от Rails.root)

Вот суть: https://gist.github.com/thisismydesign/9dc142f89b82a07e413a45a5d2983b07

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