我正试图将对象添加到数组数组中,但当我这样做时,我在数组单元测试数组中收到错误,说明:- " nil:NilClass的未定义方法'has_key' "。然而,如果我尝试添加一个字符串或数字到数组的数组,它绝对工作得很好。
我像这样创建数组的数组
@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'
没问题。
——编辑——
测试失败
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')
结束我新的ruby,所以不确定我哪里错了。由于
就像Claw说的,这个错误可能意味着您的MyObject.new
语句由于某种原因返回了一个nil对象。然后你试图调用那个nil对象的'has_key'函数。
你的MyObject类抛出异常,如果你使用.new!
而不是.new
?如果是,你可以看到为什么它不能返回一个正确的MyObject对象。
编辑
要在MyObject模型的'new'方法中捕获异常,可以这样做:
def new
begin
#whatever is done in this method
rescue => exception
puts exception.message
end
end