我有一个工厂,如:
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)>'
这是一个新项目,所以我不相信测试是真正的问题。我想可能是设置不正确。有什么想法尝试和/或在哪里寻找解决这个问题?
我平淡无奇的页面。rb文件:
class Pages < ActiveRecord::Base
# attr_accessible :title, :body
end
从文件名来看,模型实际上被命名为LandingPage。工厂试图根据您给它的名称猜测您的类名。所以:page变成了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
看起来您的模型名称是复数:Pages
。这个应该是单数,Page
。您还需要将文件重命名为app/models/page.rb
。