TDD
gem 'minitest', '~> 5.2'
require 'minitest/autorun'
require 'minitest/pride'
require './tire'
class TireTest < Minitest::Test
def test_the_tire_does_not_start_out_flat
tire = Tire.new
refute tire.flat?, "This tire is brand new"
end
def test_the_tire_has_a_blowout
tire = Tire.new
tire.blow_out
assert tire.flat?, "I ran over a nail!"
end
end
法典
class Tire
attr_reader :tire
def initialize
@tire = false
end
def flat?
@tire
end
def blow_out
@tire = true
end
end
解决此测试的更好方法比我所拥有的更好?虽然更简单,但您可以分解代码并使其对阅读它的其他人有意义。
可以应用于现有解决方案的一些小更改。
@flat
属性的名称更合适,因为它本身就是轮胎的属性。- 封装
attr_reader
,除非你需要一个具体的公开使用案例。 - 更喜欢使用
attr_reader
而不是直接调用实例变量。
class Tire
def initialize
@flat = false
end
def flat?
flat
end
def blow_out
@flat = true
end
private
attr_reader :flat
end