我有一个将继承自Ruby的类。有没有一种方法可以在Rspec中测试这个类?您是否会在测试中创建子类并让它们从父级继承以查看子级是否具有适当的方法?例如:
说这是我们的父类:
class Animal
def breathe
"it's breathing"
end
def self.color(some_color)
@color = some_color
end
attr_reader :color
end
并在我们的测试中
let(:dummy_animal) do
class DummyAnimal < described_class
color :brown
end
DummyAnimal
end
但是,上述方法无效。返回的DummyAnimal
没有设置任何实例变量,这正是我所期待的。有没有好的方法来测试这个?我是以错误的方式解决这个问题吗?
答案 0 :(得分:0)
在规范中创建类是没有意义的。
我会在应用代码中定义类:
class DummyAnimal < Animal
...
end
在规格
中describe DummyAnimal
specify '#color' do
expect(subject.color).to eq 'brown'
end
end
答案 1 :(得分:0)
您是否会在测试中创建子类并让它们从父级继承以查看子级是否具有相应的方法?
没有。测试你写的代码。继承是Ruby类的基本特性,让Ruby的作者确保它的工作原理。外部库,宝石和其他第三方代码也是如此。
如果要从另一个类继承一个类,或者从模块中混合代码,则每个单元(类或模块)都应该有自己的测试。当一个类扩展另一个类的行为时,您应该只测试添加或覆盖的新功能。