rspec测试,如何在我的情况下获取id?

我的控制器有一个rsepc测试,在我的测试中,我有以下代码片段:

... params= {SOME PARAMETERS} post :create, params 

上面的代码在我的控制器中测试create方法, create方法创建一个实例对象并将其保存到数据库中。

现在的问题是如何在数据库中获取创建的实例对象的id

看来(我不确定)我需要查询测试数据库中的这个对象,如何查询? (PS:我知道有Factory可以用来创建对象实例,但这是一个测试控制器,使用Factory会松开测试控制器的创建方法的目的。所以,请不要建议我使用Factory

我想知道如何根据我的代码获取我创建的对象实例的ID? 谢谢:)

如果您在控制器中为对象分配类似的内容

 @object = Object.new(params[:object] 

那么它将使用assigns方法可用,因此您可以执行以下操作:

 assigns[:object].id 

如果成功保存,它将返回id。

– 编辑 –

使用RSpec 2它似乎是一个方法调用,所以你提供这样的属性

 assigns(:object) 

而不是旧的类似哈希的行为