这是rspec website中唯一的代码示例:
# bowling_spec.rb
require 'bowling'
describe Bowling, "#score" do
it "returns 0 for all gutter game" do
bowling = Bowling.new
20.times { bowling.hit(0) }
bowling.score.should eq(0)
end
end
如果项目的要求是对每个方法进行测试,那么#hit
的测试会是什么样的?
我可以看到这个测试(一旦添加多个示例)将测试#hit
和#score
,但是有更好的方法来隔离每个吗?或者是正确的方法只是说一个测试是测试两种方法?
答案 0 :(得分:1)
如果项目的要求是对每个方法进行测试
所以你有一个官僚主义问题,而不是技术问题。如果一个方法足够简单(hit
)完全指定为指定另一个方法(score
)的副作用,那么重做规范只是为了专注于setter是多余的。但是如果你必须这样做,你可以复制它并调整现有的描述,例如:
describe Bowling, "#hit" do
it "sets score to 0 for all gutter game" do
bowling = Bowling.new
20.times { bowling.hit(0) }
bowling.score.should eq(0)
end
end
......这对我来说似乎很残忍。