Ruby on rails rspec测试,在我的情况下如何获取id?
我的控制器有一个rsepc测试,在我的测试中,我有以下代码段:Ruby on rails rspec测试,在我的情况下如何获取id?,ruby-on-rails,ruby-on-rails-3,rspec,rspec2,Ruby On Rails,Ruby On Rails 3,Rspec,Rspec2,我的控制器有一个rsepc测试,在我的测试中,我有以下代码段: ... params= {SOME PARAMETERS} post :create, params 上面的代码测试了我的控制器中的create方法,create方法创建一个实例对象并将其保存到数据库中 现在的问题是如何获取数据库中创建的实例对象的id 似乎(我不确定)我需要查询这个对象的测试数据库,如何查询? (注:我知道有工厂可以用来创建对象实例,但这是对控制器的测试,使用工厂将失去测试控制器创建方法的目的。因此,请不要建议我
...
params= {SOME PARAMETERS}
post :create, params
上面的代码测试了我的控制器中的create方法,create方法创建一个实例对象并将其保存到数据库中
现在的问题是如何获取数据库中创建的实例对象的id
似乎(我不确定)我需要查询这个对象的测试数据库,如何查询?
(注:我知道有工厂可以用来创建对象实例,但这是对控制器的测试,使用工厂将失去测试控制器创建方法的目的。因此,请不要建议我使用工厂)
我想知道如何根据我的代码获取我创建的对象实例的id?谢谢:)如果您在控制器中为对象分配了如下内容
@object = Object.new(params[:object]
然后,它将使用assigns方法可用,因此您可以执行以下操作:
assigns[:object].id
并且它将返回id,假设它已成功保存
--编辑--
对于rspec2,赋值似乎是一个方法调用,因此您可以像这样提供属性
assigns(:object)
当我注意到您使用的是RSpec 2时,我更新了我的答案,而不是旧的散列行为。您将得到一个使用旧语法的弃用警告。