Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rspec测试,在我的情况下如何获取id?_Ruby On Rails_Ruby On Rails 3_Rspec_Rspec2 - Fatal编程技术网

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

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 似乎(我不确定)我需要查询这个对象的测试数据库,如何查询? (注:我知道有工厂可以用来创建对象实例,但这是对控制器的测试,使用工厂将失去测试控制器创建方法的目的。因此,请不要建议我

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

...
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时,我更新了我的答案,而不是旧的散列行为。您将得到一个使用旧语法的弃用警告。