Ruby on rails 测试factoryGirl工厂定义rails

Ruby on rails 测试factoryGirl工厂定义rails,ruby-on-rails,ruby,rspec,factory-bot,Ruby On Rails,Ruby,Rspec,Factory Bot,我正在测试我的factoryGirl工厂: #spec/factories/post.rb FactoryGirl.define do factory :post do |p| p.title "Title" p.body "Body" end end FactoryGirl.factories.map(&:name).each do |factory_name| describe "The #{factory_name} factory" do it 'is val

我正在测试我的factoryGirl工厂:

#spec/factories/post.rb
FactoryGirl.define do
 factory :post do |p|
  p.title "Title"
  p.body "Body"
 end
end

FactoryGirl.factories.map(&:name).each do |factory_name|
 describe "The #{factory_name} factory" do
  it 'is valid' do
   build(factory_name).should be_valid
  end
 end
end

但我有一个错误:

in `block in <top (required)>': uninitialized constant Factory (NameError)
'block in'中的
:未初始化的常量工厂(NameError)
也许可以试试这个:

在/spec中创建一个名为factories_spec.rb的单独文件,如下所示

require 'spec_helper'

FactoryGirl.factories.map(&:name).each do |factory_name|
  describe "The #{factory_name} factory" do
     it 'is valid' do
      build(factory_name).should be_valid
     end
  end
end

记住包含require'spec_helper'行

我刚刚在一个模型规范文件中尝试了rspec代码,效果很好。这对你有用吗??这种方法不干燥,但它可能有助于诊断问题。好的,它对我有效。一个问题:最好是在factories\u spec.rb文件中组织每个factoryGirl.define,还是为每个factoryGirl.define创建一个单独的文件更好?就个人而言,我会创建单独的文件,但这只是因为当我执行“rails生成模型名”等操作时,这些单独的文件会为我生成,所以我只遵循流程。但是这堆代码非常好而且很枯燥,所以把它放在一个地方并有一个特殊的一次性文件覆盖所有工厂是有意义的。听到其他人的观点会很有趣:)