我正在使用最新版本的Rails,Rspec和Factory Girl,当我尝试测试我的创建或更新逻辑时,我遇到了一个奇怪的问题。有问题的控制器是Admin命名空间的PostsController,模型是Post。工厂本身只是创建一个标题和正文的帖子。
describe 'create' do
before :all do
@new = Factory.build(:post)
end
it 'should be successful' do
post :create, :post => @new
response.should be_success
end
describe 'failure' do
it 'should not create a new page' do
lambda do
post :create, :post => @new
end.should_not change(Post, :count)
end
it 'should render the new template' do
post :create, :post => @new
response.should render_template('new')
end
end
端
我一直收到的错误是:
的ActiveRecord :: UnknownAttributeError: 未知属性:发布
我可能正在做一些非常愚蠢的事情,但我现在就迷失了。
更新
万一有人应该偶然发现这个......
我做了一件非常愚蠢的事。我的控制器出错,而不是调用Post.new(params [:post])我正在调用Post.new(params)......
答案 0 :(得分:2)
了解它失败的路线会有所帮助。如果它在'before:all'块中失败,则问题可能在您的工厂代码中,这可能是为模型中不存在的'post'属性指定的值。
如果那是工厂正在做的事情,但实际上应该存在'post'属性,那么也许你从命令行使用rspec
运行它,而不先运行rake db:test:prepare
。在这种情况下,您的“帖子”表结构可能不是最新的。