我正在尝试将一个对象添加到数组数组中,但是当我这样做时,我在数组单元测试数组中收到一个错误,说明: - “nil的未定义方法'has_key':NilClass”。但是,如果我尝试在数组数组中添加一个字符串或数字,它就可以正常工作。
我设置了像这样的数组
@array_of_array= Array.new(5) { Array.new(3) }
现在,如果我尝试这样做
@array_of_array[0][0] = MyObject.new
然后,如果我对@array_of_array运行我的单元测试,我会收到错误。
但如果我尝试这样做
@array_of_array[0][0] = 'Test'
没问题。
- 编辑---
Heres测试失败
it "should place object in correct starting position" do
array_of_array= Array.new(5) { Array.new(3) }
array_of_array[1][0] = MyObject.new
array_of_array.should eql('fail on purpose..want to see output')
端
我是红宝石的新手,所以不确定我哪里出错了。感谢
答案 0 :(得分:1)
就像Claw所说,错误可能意味着你的MyObject.new
语句由于某种原因返回了一个nil对象。然后你试图调用那个nil对象的函数'has_key'。
如果使用.new!
而不是.new
,MyObject类是否会抛出异常?如果是这样,你就会明白为什么它没有返回正确的MyObject对象。
修改强>
要在MyObject模型的'new'方法中捕获异常,您可以执行以下操作:
def new
begin
#whatever is done in this method
rescue => exception
puts exception.message
end
end