Rspec - 未知属性错误

时间:2015-05-07 09:18:59

标签: ruby-on-rails rspec

我在rubyonrailstutor.com上关注了Restauranlty教程,一切都很完美。现在我正在尝试在我的项目中实现相同的测试,其中有更多的模型与它们之间存在关联,并且我遇到了错误。

我尝试过研究这个问题,甚至在这个网站上遇到过几个问题 - 最值得注意的是this onethis one

我有以下型号:

class Album < ActiveRecord::Base
  belongs_to :artist

  validates_presence_of :title
  validates_presence_of :no_of_tracks

end

class Artist < ActiveRecord::Base
  has_many :albums
end

我有以下工厂:

FactoryGirl.define do
  factory :artist do
    name "MyString"
    image "MyString"
    bio "MyString"
  end
end

FactoryGirl.define do
  factory :album do
    title "MyString"
    no_of_tracks 0
    artist
  end
end

除了遵循Restaurantly教程之外,这是我第一次测试,所以我也查看this guide为有关联的模型设置工厂女孩。

我的测试是:

describe Album do
  subject(:album) { FactoryGirl.build :album, title: nil, artist: nil,
    no_of_tracks: nil }
  it { expect(album.valid?).to be_false }
end

但是当我运行它时失败并出现错误:can't write unknown attribute artist_id

我上面提到的问题表明,我的数据库可能没有正确迁移,但我已经同时运行了

bundle exec rake db:migrate RAILS_ENV=test

bundle exec rake db:test:prepare

无济于事。正如我所说,我对测试非常非常新,所以如果有人能指出我正确的方向,我将不胜感激。

2 个答案:

答案 0 :(得分:1)

一切都很好看。 你的artist_id表格中确实有一列albums吗?

答案 1 :(得分:0)

我怀疑数据库中的albums表没有artist_id外包密钥。