✓
ࡉ͔͍ example ͕͍ͬͺ͍
✓ example ͷू·Γ͔Βʮৼ
Δ͍ʯΛ૾ͮ͠Β͍
✓ ύϥϝλϥΠζਏ͍
Slide 9
Slide 9 text
let(:job) { create(:job) }
!
before do
job.import_task_statuses(
[:success, :doing, :success, :error]
)
end
!
specify {
expect(job.tasks.where(status: :success)).to
have(2).records
}
!
specify {
expect(job.tasks.where(status: :doing)).to
have(1).records
}
Slide 10
Slide 10 text
Rails doesn’t save
YOUR Applications!
(it’s an awesome FRAMEWORK!)
http://sapporo.rubykaigi.org/2012/ja/schedule/details/79.html
http://sapporo.rubykaigi.org/2012/ja/schedule/details/79.html
Slide 11
Slide 11 text
Rails doesn’t save
YOUR Applications!
(it’s an awesome FRAMEWORK!)
http://sapporo.rubykaigi.org/2012/ja/schedule/details/79.html
Slide 12
Slide 12 text
Rails doesn’t save
YOUR Applications!
(it’s an awesome FRAMEWORK!)
http://sapporo.rubykaigi.org/2012/ja/schedule/details/79.html
also
RSpec, too
Slide 13
Slide 13 text
Test facilities for
YOUR Applications.
Slide 14
Slide 14 text
✓
Arrange: Smart factory &/or
Shared context
✓
Act: Your nice facade in
production code
✓
Assert: ?
Slide 15
Slide 15 text
CustomMatcher ͷ
͝ఏҊ
Slide 16
Slide 16 text
ΞϓϦέʔγϣϯ
εέʔϧͷޠኮ
Slide 17
Slide 17 text
RSpec::Matchers.
define(:matchers_name) do |expected|
match do |actual|
actual == expected
end
end
Slide 18
Slide 18 text
RSpec::Matchers.
define(:matchers_name) do |expected|
match do |actual|
actual == expected
end
end
Slide 19
Slide 19 text
ΞϓϦέʔγϣϯ
εέʔϧͷޠኮ
Slide 20
Slide 20 text
RSpec::Matchers.
define(:have_task_statuses) do |expectation|
!
match do |actual|
statuses = actual.tasks.each_with_object(Hash.new(
hash[t.status] += 1
}
!
expect(statuses).to eq expectation
end
end
Slide 21
Slide 21 text
let(:job) { create(:job) }
!
before do
job.import_task_statuses(
[:success, :doing, :success, :error]
)
end
!
specify do
expect(job).to have_task_statuses(
success: 2, doing: 1, error: 1
)
end
Slide 22
Slide 22 text
let(:job) { create(:job) }
!
before do
job.import_task_statuses(
[:success, :doing, :success, :error]
)
end
!
specify {
expect(job.tasks.where(status: :success)).to
have(2).records
}
!
specify {
expect(job.tasks.where(status: :doing)).to
have(1).records
}
Before
Slide 23
Slide 23 text
let(:job) { create(:job) }
!
before do
job.import_task_statuses(
[:success, :doing, :success, :error]
)
end
!
specify do
expect(job).to have_task_statuses(
success: 2, doing: 1, error: 1
)
end
After