假设您有一个简单的类,例如:
class Box
def initialize
@widgets = []
end
def add_widget(widget)
@widgets << widget
end
def widgets
@widgets
end
end
我会写一个看起来像这样的测试:
describe Box do
describe "#initialize" do
it "creates an empty box"
Box.new.widgets.should == []
end
end
describe "#add_widget" do
it "adds a widget to the box"
widget = stub('widget')
box = Box.new
box.add_widget(widget)
box.widgets.should == [widget]
end
end
describe "#widgets" do
it "returns the list of widgets"
widget = stub('widget')
box = Box.new
box.add_widget(widget)
box.widgets.should == [widget]
end
end
end
请注意最后两个测试最终是如何相同的。我正在努力避免这些重叠的情况。我在前两种情况下隐式测试#widgets,但我觉得也应该有一个显式测试。但是,此代码最终与第二种情况相同。
如果一个类有 3 个公共方法,那么我希望至少有一个测试对应于这些方法中的每一个。我错了吗?
更新
我发现了 Ron Jeffries 的这篇文章,它建议不要测试简单的访问器。