我正在使用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