Rspec创建/更新未知属性错误

时间:2011-12-23 17:36:16

标签: ruby-on-rails-3 rspec

我正在使用最新版本的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)......

1 个答案:

答案 0 :(得分:2)

了解它失败的路线会有所帮助。如果它在'before:all'块中失败,则问题可能在您的工厂代码中,这可能是为模型中不存在的'post'属性指定的值。

如果那是工厂正在做的事情,但实际上应该存在'post'属性,那么也许你从命令行使用rspec运行它,而不先运行rake db:test:prepare。在这种情况下,您的“帖子”表结构可能不是最新的。