Девочка фабрики установки с тестом:: единица и должна иметь

комната должна удалить символьную ссылку.

skrall@skrall-desktop:~$ mkdir bar
skrall@skrall-desktop:~$ ln -s bar foo
skrall@skrall-desktop:~$ ls -l foo
lrwxrwxrwx 1 skrall skrall 3 2008-10-16 16:22 foo -> bar
skrall@skrall-desktop:~$ rm foo
skrall@skrall-desktop:~$ ls -l foo
ls: cannot access foo: No such file or directory
skrall@skrall-desktop:~$ ls -l bar
total 0
skrall@skrall-desktop:~$ 
16
задан NolanDC 21 July 2009 в 16:12
поделиться

9 ответов

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

require 'factory_girl'
Factory.find_definitions

Надеюсь, это поможет.

40
ответ дан 30 November 2019 в 15:30
поделиться

Вместо того, чтобы называть заводской файл test_factory.rb, попробуйте назвать его factory.rb

0
ответ дан 30 November 2019 в 15:30
поделиться

Вы пытались переместить

require 'factory_girl'

в свой test / test_helper .rb ?

Заводской механизм автоматической загрузки может зависеть от того, где вызывается требование. Возможно, он пытается найти фабрики * test / models / factory / ** вместо * test / factory / **

0
ответ дан 30 November 2019 в 15:30
поделиться

У меня была такая же проблема. В конце концов я сделал это, поместив все свои фабрики в "/test/factories.rb" и записав следующие строки в моем файле "/test/test_helper.rb":

require 'factory_girl'
require File.dirname(__FILE__) + "/factories"

вы можете сделать то же самое для нескольких файлов, потребовав их в test_helper. Я еще не понял, почему автоматическое включение, упомянутое в readme "factory_girl", не происходит.

2
ответ дан 30 November 2019 в 15:30
поделиться

Попробуйте поместить это в test_helper.rb:

require 'factory_girl'
Dir.glob(File.dirname(__FILE__) + "/factories/*").each do |factory|
  require factory
end
3
ответ дан 30 November 2019 в 15:30
поделиться

Если бы я требовал только 'factory_girl' в test_helper.rb, я бы получил такое же поведение, как вы упомянули, но если бы мне это потребовалось в моем config / test / environment.rb (обратите внимание, я использую защитник окружающей среды ), он бы правильно нашел определение Factory без каких-либо проблем.

Я попробовал это после того, как прочитал заводской rdoc для девочек, в котором говорится, что config.gem следует поместить в вашу среду.

1
ответ дан 30 November 2019 в 15:30
поделиться

I also managed to get rid of this issue by putting this line into my environment.rb:

config.gem "factory_girl", :source => "http://gemcutter.org"

Make also sure you have the latest gem:

Name changed from "thoughtbot-factory_girl" to "factory_girl", source changed from "http://gems.github.com" to "http://gemcutter.org".

2
ответ дан 30 November 2019 в 15:30
поделиться

Интересно. У меня была аналогичная проблема при попытке заставить огурец работать с factory_girl. Изначально я сконфигурировал factory_girl для поиска ('config.gem'), но не загружал в среду огурца и полностью требовал в 'features / support / env.rb', так же, как огурец делает для webrat и т. Д. Это только начало работать, когда я явно сказал factory_girl найти его определения, как предложил Кенни выше.

Когда я удалил инструкцию require из env.rb и полностью использовал factory_girl в среде огурца, эффект исчез, и factory_girl заработала из коробки.

Так что действительно, кажется, вопрос в том, когда (или в каком контексте) будет загружена factory_girl.

0
ответ дан 30 November 2019 в 15:30
поделиться

Если у вас возникла эта проблема с Ruby 1.9.2, require ожидает расширенный путь.

File.expand_path("test/factories.rb")

Этот патч решил мою проблему. Я только что отправил запрос на перенос. После этого вы можете добавить это в свой test_helper.rb :

require 'factory_girl'
FactoryGirl.find_definitions
2
ответ дан 30 November 2019 в 15:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: