0

我在测试以下内容时遇到问题。创建对象时,会分配“待定”状态。状态实际上是一个活动记录关联。所以看起来像这样

def object
  belongs_to :object_status
end

def object_status
  has_many :objects

  def self.pending
    find_by_name('pending')
  end
end

然后在控制器中创建它这样做

@object = Object.new(params[:object])
@object.object_status = ObjectStatus.pending
@object.save

在 RSpec 中,我想测试以确保对象的状态为挂起,因此我在我的 objects_controller_spec 中执行此操作:

post :create, :object => @attr # I'm using pre-defined attributes
p = Object.last
p.object_status_id.should eq(Factory(:object_status_pending).id)

RSpec 测试失败并出现以下情况(16 是 Factory 对象的 id): 预期 16 得到 nil 出于某种原因,它没有检索 object_status_id 的值。如果我在我的开发服务器中运行代码,则数据库中的对象的 object_status_id 设置正确,所以我知道代码通过了测试。我有多个我无法弄清楚的实例。

谢谢

4

1 回答 1

0

这是由于对 Factory_Girl 缺乏了解。我实际上并没有在测试数据库中创建对象,只是在夹具中。

于 2012-05-05T21:44:14.517 回答