工厂女孩:未初始化的常数

时间:2013-01-18 00:00:02

标签: ruby-on-rails ruby-on-rails-3 rspec2 factory-bot

我有一家工厂,如:

FactoryGirl.define do
  factory :page do
    title 'Fake Title For Page'
  end
end

测试:

describe "LandingPages" do
    it "should load the landing page with the correct data" do
        page = FactoryGirl.create(:page)
        visit page_path(page)
    end
end

我的spec_helper.rb包含:

require 'factory_girl_rails' 

但我一直在接受:

LandingPages should load the landing page with the correct data
     Failure/Error: page = FactoryGirl.create(:page)
     NameError:
       uninitialized constant Page
     # ./spec/features/landing_pages_spec.rb:5:in `block (2 levels) in <top (required)>'

这是一个新项目,所以我不相信测试实际上是问题所在。我相信它可能设置不正确。关于要尝试的事情的任何想法和/或在哪里寻求解决这个问题?

我平静的pages.rb文件:

class Pages < ActiveRecord::Base
  # attr_accessible :title, :body
end

2 个答案:

答案 0 :(得分:23)

它从您的文件名看起来像模型实际上名为LandingPage。工厂正在尝试根据您提供的名称猜测您的班级名称。所以:页面变为Page。

您可以更改工厂名称,也可以添加显式类选项:

FactoryGirl.define do
  factory :landing_page do
    title 'Fake Title For Page'
  end
end

FactoryGirl.define do
  factory :page, :class => LandingPage do
    title 'Fake Title For Page'
  end
end

答案 1 :(得分:6)

看起来您的模型名称是复数:Pages。这应该是单数:Page。您还需要将文件重命名为app/models/page.rb。 FactoryGirl假设一个单一的模型名称。