describe SomeClass do
context 'εςʔλείʔυ͕200' do
context 'JSONͷϑΥʔϚοτ͕ਖ਼͍͠' do
end
context 'JSONͷϑΥʔϚοτ͕ෆਖ਼' do
end
end
context 'εςʔλείʔυ͕4XX' do
end
context 'εςʔλείʔυ͕5XX' do
context 'ϦτϥΠͯ͠ޭ͢Δ' do
end
context 'ϦτϥΠͯ͠5XX' do
end
end
end
ςετʹͯ͠ΈΔ
ςετΛॻ͘
describe JavaVersion do
describe '.valid?' do
subject {
JavaVersion.valid?('JDK7u40')
}
it { should be_true }
end
end
Slide 59
Slide 59 text
ϓϩμΫτίʔυΛॻ͘
class JavaVersion
def self.valid?(str)
true
end
end
ͱΓ͋͑ͣGBLFJU
Slide 60
Slide 60 text
ςετΛॻ͘
describe '.valid?' do
context 'valid version string' do
subject {
JavaVersion.valid?('JDK7u40')
}
it { should be_true }
end
context 'invalid version string' do
subject { JavaVersion.valid?('hoge') }
it { should be_false }
end
end
Slide 61
Slide 61 text
ϓϩμΫτίʔυΛॻ͘
class JavaVersion
def self.valid?(str)
str =~ /^JDK\d+u\d+$/
end
end
ςετΛॻ͘
describe '.parse' do
context 'valid version string' do
subject {
JavaVersion.parse('JDK7u40')
}
it { should be }
end
context 'invalid version string' do
it {
expect { JavaVersion.parse('hoge')
}.to raise_error
}
end
end
Slide 66
Slide 66 text
ϓϩμΫτίʔυΛॻ͘
class JavaVersion
...
def self.parse(str)
raise "Invalid Version Format: #{str}"
unless valid?(str)
self.new
end
end
ςετΛॻ͘
describe '#<=>' do
let(:v7u40) { JavaVersion.parse('JDK7u40') }
let(:v7u51) { JavaVersion.parse('JDK7u51') }
let(:v8u0) { JavaVersion.parse('JDK8u0') }
context 'compare update number' do
it { v7u40.should be < v7u51 }
end
context 'compare family number' do
it { v7u40.should be < v8u0 }
end
end
Slide 82
Slide 82 text
ϓϩμΫτίʔυΛॻ͘
class JavaVersion
include Comparable
...
def <=>(target)
if (self.family_number <=> target.family_number).zero?
self.update_number <=> target.update_number
else
self.family_number <=> target.family_number
end
end
end