web-services - 如何使用 ruby 中的字符串键来模拟哈希,这是新的哈希表示法中的一个

  显示原文与译文双语对照的内容

当我从一个用字符串键返回一个哈希的web服务中获得响应时,我必须如下所示:


foo = @web_service.get_foo
if foo["code"] == 200
 # do something
end

我必须模仿这个web服务,并返回一个字符串哈希,因为我检查了一个字符串键"代码"。


@web_service.should_receive(:get_foo).and_return("code" => 200)

但是如何使用新的ruby 哈希表示法。 就像这样:


@web_service.should_receive(:get_foo).and_return("code": 200)

我无法将服务中的响应更改为符号键。 我必须使用新旧符号的混合?

编辑在主题中更改一个单词。 它是带字符串键的哈希。

时间:

似乎你的web服务返回 JSON 。 你可以让解析器将密钥转换为符号:


require 'multi_json'
MultiJson.load('{"code":200}', symbolize_keys: true)
# => {:code=>200}

这将允许你将代码更改为


foo = @web_service.get_foo
if foo[:code] == 200
 # do something
end

还有你的规格


@web_service.should_receive(:get_foo).and_return(code: 200)

...