25. 最初のテスト
テストコード
[age_calc_spec.rb]
require './age_calc'
require 'date'
describe AgeCalc do
before do
@age_calc = AgeCalc.new
end
it "birthdayで誕生日が設定できること" do
@age_calc.birthday = Date.new(1989,2,25)
@age_calc.birthday.should == Date.new(1989,2,25)
end
end
40. テストケース追加
テストコード
[age_calc_spec.rb]
require './age_calc'
require 'date'
describe AgeCalc do
...
it "ageで年齢が返ること" do
@age_calc.birthday = Date.new(1989,2,25)
@age_calc.age.should == 23
end
end
44. 実装
#[age_calc.rb]
class AgeCalc
attr_accessor :birthday
def age
(Time.now.strftime("%Y%m%d").to_i -
@birthday.strftime("%Y%m%d").to_i) / 10000
end
end
45. 実装
プロダクトコード
#[age_calc.rb]
class AgeCalc
attr_accessor :birthday
def age
(Time.now.strftime("%Y%m%d").to_i -
@birthday.strftime("%Y%m%d").to_i) / 10000
end
end
50. テストケース追加
テストコード
#[age_calc_spec.rb]
require './age_calc'
require 'date'
describe AgeCalc do
...
it "birthdayが未設定の場合、ageでnilが返ること" do
pending “あとで書く”
@age_calc.age.should be_nil
end
end
54. 実装
[age_calc.rb]
class AgeCalc
...
def age
if @birthday
(Time.now.strftime("%Y%m%d").to_i -
@birthday.strftime("%Y%m%d").to_i) / 10000
else
nil
end
end
end
55. 実装
プロダクトコード
[age_calc.rb]
class AgeCalc
...
def age
if @birthday
(Time.now.strftime("%Y%m%d").to_i -
@birthday.strftime("%Y%m%d").to_i) / 10000
else
nil
end
end
end
61. raise_error
テストコード
[age_calc_spec.rb]
require './age_calc'
describe AgeCalc do
...
it "birthdayにDate以外の値を設定すると、ageで例外が返る
こと" do
@age_calc.birthday = “23 years ago”
lambda{@age_calc.age}.should raise_error
end
end
64. change
テストコード
[age_calc_spec.rb]
require './age_calc'
describe AgeCalc do
...
it "increment_ageでageが1増えること" do
@age_calc.birthday = Date.new(1989,2,25)
lambda {@age_calc.increment_age}.should
change(@age_calc.age).from(23).to(24)
end
end
67. be_close
テストコード
[age_calc_spec.rb]
require './age_calc'
describe AgeCalc do
...
it "ageが20から30の間にあること" do
@age_calc.birthday = Date.new(1989,2,25)
@age_calc.age.should be_close(20,30)
end
end
73. 否定
テストコード
[age_calc_spec.rb]
require './age_calc'
describe AgeCalc do
...
it "ageがDateクラスのオブジェクトでないこと" do
@age_calc.birthday = Date.new(1989,2,25)
@age_calc.age.should_not be_is_a(Date)
end
end