Ruby,断言_等于两个对象数组

Ruby,断言_等于两个对象数组,ruby,unit-testing,assert,Ruby,Unit Testing,Assert,我有以下情况。我试图为一组对象编写一个单元测试。对象的定义如下: class Element attr_reader :title, :season, :episode def initialize ( name, number ) @name = name @number = number end def to_s number = "%02d" % @number result = "Number " << number &l

我有以下情况。我试图为一组对象编写一个单元测试。对象的定义如下:

class Element
  attr_reader :title, :season, :episode

  def initialize ( name, number )
    @name = name
    @number = number
  end

  def to_s
    number = "%02d" % @number

    result = "Number " << number << " " << @name
    result
  end
end
类元素
读者简介:标题、季节、插曲
def初始化(名称、编号)
@name=name
@数字=数字
结束
def至美国
number=“%02d”%@number

result=“Number”尝试使用以下代码为类声明方法
=

def ==(other)
  self.to_s == other.to_s
end
旁注,您可能也想重构to_的方法,以获得一些简洁的代码

def to_s
  "Number %02d #{@name}" % @number
end
编辑:

数字已经定义了
=
方法(https://github.com/evanphx/rubinius/blob/master/kernel/bootstrap/fixnum.rb#L117)

Ruby通过对数组的每个元素运行
=
比较来比较数组。下面是在数组上实现的
==
,正如在Rubinius中所做的那样(一个几乎完全用Ruby本身编写的Ruby实现)


如果不考虑各种错误检测,它基本上会对数组的所有元素递归运行
=
,如果所有元素都匹配,则返回true。

自从通过EdgeCase ruby Koans学习ruby以来,我发现自己一直在使用它们作为类似您的问题的参考。您可能想查看它们以备将来参考@revdrjrr:谢谢你的链接,我已经听说过了,但是从来没有机会找到它们。好吧,谢谢,但是我为什么要这么做呢?当我有一个say数字数组(据我所知,这些数字本身也是对象)时,我不必覆盖==方法。感谢重构提示:)@Mark,更新了答案,因为太长了,无法在评论中解释:)