Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/65.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分配将哈希键转换为字符串_Ruby On Rails_Hash_Rspec - Fatal编程技术网

Ruby on rails rspec分配将哈希键转换为字符串

Ruby on rails rspec分配将哈希键转换为字符串,ruby-on-rails,hash,rspec,Ruby On Rails,Hash,Rspec,我有一个控制器操作,其中我将哈希分配给一个实例变量。在我的rspec测试文件中,我使用assigns对其进行测试,实例变量被指定给我期望的值。出于某种原因,assigns给了我一个带有字符串键的散列。如果在控制器中打印实例变量,则有符号键 请在下面查找代码。它被简化了 class TestController < ApplicationController def test @test_object = {:id => 1, :value => 2, :name =

我有一个控制器操作,其中我将哈希分配给一个实例变量。在我的rspec测试文件中,我使用assigns对其进行测试,实例变量被指定给我期望的值。出于某种原因,assigns给了我一个带有字符串键的散列。如果在控制器中打印实例变量,则有符号键

请在下面查找代码。它被简化了

class TestController < ApplicationController
  def test
    @test_object = {:id => 1, :value => 2, :name => "name"}
  end
end
上述测试失败,并显示错误消息

expected: {:id=>1, :value=>2, :name=>"name"}
     got: {"id"=>1, "value"=>2, "name"=>"name"}

请帮助我理解它为什么这样做。

RSpec从常规Rails测试/单元帮助程序中借用赋值,并与\u interference\u访问一起使用,以返回请求的实例变量,如赋值:my\u var

Hashwith_interference_access返回哈希的一个键字符串化版本作为深度副本,其副作用是字符串化作为哈希的实例变量的键

如果您尝试匹配整个散列,它将失败,但如果您检查特定键的值,无论它们是符号还是字符串,它都会起作用

也许举个例子有助于澄清:

{:a => {:b => "bravo"}}.with_indifferent_access => {"a"=>{"b"=>"bravo"}} 
{:a => {:b => "bravo"}}.with_indifferent_access[:a][:b] => "bravo"

RSpec从常规的Rails测试/单元帮助程序借用assigns,并与_interference_access一起使用,以返回请求的实例变量,如assigns:my_var中所示

Hashwith_interference_access返回哈希的一个键字符串化版本作为深度副本,其副作用是字符串化作为哈希的实例变量的键

如果您尝试匹配整个散列,它将失败,但如果您检查特定键的值,无论它们是符号还是字符串,它都会起作用

也许举个例子有助于澄清:

{:a => {:b => "bravo"}}.with_indifferent_access => {"a"=>{"b"=>"bravo"}} 
{:a => {:b => "bravo"}}.with_indifferent_access[:a][:b] => "bravo"
可能的重复可能的重复