我正在使用rspec來測試散列是否包含密鑰。Ruby:方法參數中()和[]之間的區別
response_data = JSON.parse(response.body)['data']
expect(response_data).to have_key('store_id')
expect(response_data).to have_key('store_name')
但由於錯誤,我從正常parenthese改爲方形parenthese:
response_data = JSON.parse(response.body)['data']
expect(response_data).to have_key['store_id']
expect(response_data).to have_key['store_name']
這tooks我很長一段時間的調試錯誤:
NoMethodError: undefined method `[]'
我的問題是:紅寶石不會拋出關於這個語法的異常是錯誤的,但關於undefined method
的例外,所以我很好奇紅寶石如何理解與方括號的方法。
感謝
澄清,'[]'和'[] = '實際上是'Array'上的兩個獨立方法,請查看http://ruby-doc.org/core-2.2.0/Array.html#method-i-5B-5D和http://ruby-doc.org /core-2.2.0/Array.html#method-i-5B-5D-3D分別爲 – photoionized
是的,當然,但好點。我會添加此信息:) – Ursus