Ruby on rails Rspec-比较两个json值
我从Ruby on rails Rspec-比较两个json值,ruby-on-rails,json,ruby,ruby-on-rails-3,rspec,Ruby On Rails,Json,Ruby,Ruby On Rails 3,Rspec,我从render json:{success:'success'}得到了一个响应,当我想测试响应是否收到了这样的内容时,遇到了一个问题。我的单元测试是: let(:success) do { success: "Success" } end it 'responds with json containing the success message' do expect(JSON.parse(response.bod
render json:{success:'success'}
得到了一个响应,当我想测试响应是否收到了这样的内容时,遇到了一个问题。我的单元测试是:
let(:success) do
{
success: "Success"
}
end
it 'responds with json containing the success message' do
expect(JSON.parse(response.body)).to eq(success)
end
我的测试失败了,这是:
expected: {:success=>"Success"}
got: {"success"=>"Success"}
我试图在
success:'success'
中添加双引号,使其变为'success':'success'
,但仍然存在相同的问题。我有两个问题,第一个是为什么在成功之前会有冒号,第二个是如何删除它?JSON。默认情况下,parse
会有string-y键
my_hash = JSON.parse(response.body)
p my_hash.keys.first.class # String
如果你想让它象征钥匙
my_hash = JSON.parse(response.body, symbolize_names: true)
p my_hash.keys.first.class # Symbol
注意:该选项称为symbol\u names
,而不是symbol\u keys
请记住,符号不是字符串:
p:success=='success'#false
JSON。默认情况下,parse
将具有string-y键
my_hash = JSON.parse(response.body)
p my_hash.keys.first.class # String
如果你想让它象征钥匙
my_hash = JSON.parse(response.body, symbolize_names: true)
p my_hash.keys.first.class # Symbol
注意:该选项称为symbol\u names
,而不是symbol\u keys
请记住,符号不是字符串:
p:success==“success”#false
我猜您正在尝试使用JSON格式测试API响应。您可以尝试json\u spec
gem以及许多其他有用的功能我猜您正在尝试使用json格式测试API响应。您可以尝试json\u spec
gem和许多其他有用的功能谢谢,这很有效!如果有机会,你能看看我关于RSpec的其他问题吗?我很感激!这是谢谢你,这很有效!如果有机会,你能看看我关于RSpec的其他问题吗?我很感激!最重要的是