解析我有这样的RSpec代码:JSON没有被正确的JSON.load在我的规格测试
require 'rails_helper'
require 'integrations/youtube'
RSpec.describe YoutubeIntegration do
let(:empty_playlist) {
<<-JSON
{
"kind": "youtube#playlistItemListResponse",
"etag": "\"uQc-MPTsstrHkQcRXL3IWLmeNsM/ewwRz0VbTYpp2EGbOkvZ5M_1mbo\"",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
}
JSON
}
context '- Auxiliary methods -' do
end
context '- Endpoint calls -' do
it 'get_playlist_data' do
obj = YoutubeIntegration.new
response = obj.call('youtube','get_playlist_data',nil,:playlistId => "PL3umUDtI6E97kwmnzth_kMnOD0fkwJtuB")
myjson = JSON.parse(response.body)
expect(myjson).to eq JSON.load(empty_playlist)
end
end
end
它发生YouTube数据API真的返回etag
这种方式,用引号内,你可能见here。
但是当我运行这个天赋,我得到这个错误
解析错误意外的标记。我测试了这个JSON在http://jsonlint.com,这很好,但JSON#load
不会解析它。
在另一方面,如果我把内报价并做只是这一点:
let(:empty_playlist) {
<<-JSON
{
"kind": "youtube#playlistItemListResponse",
"etag": "uQc-MPTsstrHkQcRXL3IWLmeNsM/ewwRz0VbTYpp2EGbOkvZ5M_1mbo",
"pageInfo": {
"totalResults": 0,
"resultsPerPage": 5
},
"items": []
}
JSON
}
然后我得到这个错误
因为现在,当然,内容etag
与预期不同。
我该如何处理?
这解决了我的问题,但请编辑别人的将来参考。而不是'expect(myjson).to eq empty_playlist.as_json',它只是'expect(myjson).to eq empty_playlist'。由于我们声明了一个哈希对象,因此我们不需要将其转换为JSON格式。 –
完全正确... – cefigueiredo