单元测试中的ActiveRecord UknownAttributeError

时间:2014-06-10 19:50:53

标签: ruby-on-rails unit-testing activerecord rspec-rails

您好我有以下型号

class User < ActiveRecord::Base
    acts_as_messageable

    before_save { email.downcase! }
    before_create :create_remember_token
    has_many :items , dependent: :destroy
    has_many :routes , dependent: :destroy
    has_many :bids, dependent: :destroy
    ....
 end

class Bid < ActiveRecord::Base
    belongs_to :user
    has_one :package
    ....
end

class Package < ActiveRecord::Base
    belongs_to :user
    has_many :bids, dependent: :destroy
   ....
end

当我运行单元测试时,我收到以下错误

  

失败/错误:@bid = user.bids.build(金额:34.00)        ActiveRecord的:: UnknownAttributeError:          未知属性:user_id

我的单元测试开始如下

describe Bid do

let(:user) { FactoryGirl.create(:user) }

  before { 
    @package = user.packages.build(destination: "Dublin", origin: "Naas", length: 4.9, width: 5.0, height: 9, weight:32, delivery_date: Time.now)
    @bid = user.bids.build(amount: 34.00) 
  }
  ....
end

我不确定导致此错误的原因,我觉得它很小,因为我可以在rails控制台中创建出价

u = User.new
bid = u.bids.build(amount: 33)
bid.save

我的数据库中的出价表有user_id列,所以我不知道它在抱怨什么?当我解决这个错误时,我有点担心这可能是循环依赖,只是感觉是否有人可以确认这个也不会很好。

我想在为视图和控制器编写代码之前解决这个问题,因为我试图将自己训练为TDD

1 个答案:

答案 0 :(得分:0)

也许您忘了迁移测试数据库了?所以代码在开发中运行良好,但没有进行测试?

运行 $ rake db:test:clone_structure

FactoryGirl还有一个better way处理关联