2015-08-09 53 views
0

我一直无法在spec/dummy范围的rails控制台内访问我的FactoryGirl定义。我明白,因为我的定义在spec/factories文件夹中,所以控制台不能访问它们,但我将如何去包含或找到这些定义。在Rails引擎中使用FactoryGirl

FactoryGirl的命名空间是在测试和开发控制台环境中定义的,但是我在spec/factories中的factories.rb中的工厂没有注册。

我的设置是从本教程:http://viget.com/extend/rails-engine-testing-with-rspec-capybara-and-factorygirl

+0

您能否提供一些配置代码和导致问题的代码片段?如果您可以提供代码片段以及您认为可能导致错误的原因,那么回答您的问题会更好。 – harshs08

+0

@ harshs08该链接中的确切代码是罪犯。这是准系统应用程序配置。也许我应该重新解释这个问题,以便它更少地依赖于内容代码,并且更多地要求提供一些操作方法。我只需要知道如何在引擎的控制台中访问工厂,但由于控制台是从spec/dummy运行的,因此spec/factories中的定义不会被访问。 – cmcdaniels

+0

[Rails 4 Use Engine Factory from Engine]的可能重复版本(http://stackoverflow.com/questions/25342466/rails-4-use-factory-girl-factories-from-engine) –

回答

0

我得到这样的错误的时间最长,不管我试了一下计算器建议:

ArgumentError: Factory not registered: item 

我终于明白了,当我的工厂我的引擎的名字被加在工厂文件的前缀,所以,而不是:

FactoryGirl.define do 
    factory :item do 
    ... 
    end 
end 

我看到:

FactoryGirl.define do 
    factory :my_engine_item, :class => 'MyEngine::Item' do 
    ... 
    end 
end 

最终得到的东西的工作我简称my_engine_item而不是item在我FactoryGirl声明,这样:

FactoryGirl.build(:item) 

成为

FactoryGirl.build(:my_engine_item) 

这不是一个很优雅的解决方案,甚至可能甚至没有解决您的问题,但我认为我会分享我所经历的任何事情。