Светильники Ruby on Rails в подкаталогах - PullRequest
1 голос
/ 02 октября 2019

Я использую Rails модульное тестирование и фреймворк. Если нет конфигурации, которую я не видел, я не могу использовать «Расширенные приборы» (без идентификаторов объектов) из приборов в подкаталогах:

fixtures / people.yml

_fixture:
  model_class: Person

myself:
  first_name: Me
  last_name: Myself

Следующий вызов пройдет, как и ожидалось:

fixtures :people
assert(people(:myself)))

, в то время как этот вызов не будет (после того, как я переместлю people.yml в subdir):

fixtures "subdir/people"
assert(people(:myself)))

В последнем случаея получаю следующую ошибку:

NoMethodError: undefined method `people'

Использование Advanced Fixtures кажется ценным, но наличие всех моих файлов фикстур в корне / fixtures кажется чего-то не хватает. У меня есть несколько тестовых файлов, и я хотел бы, чтобы различные тесты использовали разные каталоги фикстур.

Любой ввод будет оценен.

Ответы [ 2 ]

1 голос
/ 02 октября 2019

Я бы попытался сохранить people.yml в /fixtures/subdir/people.yml. Документация здесь https://apidock.com/rails/ActiveRecord/TestFixtures/ClassMethods/set_fixture_class.

test_helper.rb

set_fixture_class :people => 'Subdir::People'

in your test file.

before do
  myself = subdir_people(:myself)
  register(myself)
end
it "should test myself" do 
  assert(people(:myself)))
end
0 голосов
/ 03 октября 2019

Вот мое окончательное решение:

В файле фикстуры я сохранил:

_fixture:
  model_class: Person

В тестовом файле я получил:

  def people(sym)
    subdir_people(sym)
  end

  def test_myself
    assert(people(:myself))
  end

ЭтоКстати, это избавляет меня от рефакторинга моих многочисленных вызовов people (). Или я могу использовать subdir_people (), если захочу.

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