我有这样的基本结构
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
overwrite Car#some_method
,但这并不理想,因为覆盖的方法在我的测试期间保持不变(除非我使用 setup/teardown 方法重新加载原始库文件......有点丑陋的解决方案)。此外,简单地将调用存根Car#some_method
似乎不起作用。
是否有更清洁/更普遍接受的方式来做到这一点?