我有一个像这样的基本结构
class Automobile
def some_method
# this code sets up structure for child classes... I want to test this
end
end
class Car < Automobile
def some_method
super
# code specific to Car... it's tested elsewhere so I don't want to test this now
end
end
class CompactCar < Car
def some_method
super
# code specific to CompactCar... I want to test this
end
end
在不运行CompactCar
代码的情况下,测试Automobile
和Car
的推荐方法是什么? Automobile#some_method
提供了子类所需的结构,因此我希望始终对其进行测试,但Car's
功能在其他地方进行了测试,我不想重复工作。
一种解决方案是使用class_eval
覆盖Car#some_method
,但这并不理想,因为覆盖的方法在我的测试期间保持不变(除非我重新加载原始库文件使用设置/拆卸方法......一种丑陋的解决方案)。此外,简单地将调用存根到Car#some_method
似乎不起作用。
是否有更清洁/更普遍接受的方式?
答案 0 :(得分:1)
只需将特定代码放入单独的方法中即可。您似乎没有使用super中的任何内容。除非你是?
class CompactCar < Car
def some_method
super
compact_car_specific_code
end
# Test this method in isolation.
def compact_car_specific_code
# code specific to CompactCar... I want to test this
end
end