解析我有這樣的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