Slide 1

Slide 1 text

RSpec ͱ Minitest ࢖͏ͳΒͲͬͪʁ גࣜձࣾιχοΫΨʔσϯ ҏ౻ ३Ұ 2015-07-11 ؔ੢Rubyձٞ06

Slide 2

Slide 2 text

ࣗݾ঺հ • ҏ౻३Ұ • Blog: give IT a try • Twitter: @jnchito • RailsϓϩάϥϚ • େࡕ෎๛தࢢग़਎ • ฌݿݝ੢࿬ࢢࡏॅ

Slide 3

Slide 3 text

ϦϞʔτ ϫʔΫ΍ͬͯ·͢

Slide 4

Slide 4 text

੢࿬.rb Ͱษڧձ΍ͬͯ·͢ http://nishiwaki-higashinadarb.doorkeeper.jp/

Slide 5

Slide 5 text

QiitaͰΑ͘هࣄΛॻ͍ͯ·͢ Rubyͷ෦ 1Ґ Railsͷ෦ 1Ґ RSpecͷ෦ 1Ґ

Slide 6

Slide 6 text

Everyday Rails Λ຋༁͠·ͨ͠ https://leanpub.com/everydayrailsrspec-jp

Slide 7

Slide 7 text

͜͜Ͱ࣭໰Ͱ͢

Slide 8

Slide 8 text

Έͳ͞ΜɺͪΌΜͱ ςετॻ͍ͯ·͔͢ʁ

Slide 9

Slide 9 text

ࠓ೔͸ςεςΟϯά ϑϨʔϜϫʔΫͷ࿩Λ͠·͢

Slide 10

Slide 10 text

͜ͷൃදͷΰʔϧ

Slide 11

Slide 11 text

͜ͷൃදͷΰʔϧ RSpec ͱ Minitest ͷಛ௃΍௕ॴ୹ॴΛൺֱ ͠ɺ ࣗ෼ʹ߹ͬͨϑϨʔϜϫʔΫΛબͿࡍͷ ࢀߟ৘ใʹͯ͠΋Β͏

Slide 12

Slide 12 text

͜Ε͔Β͓࿩͢͠Δ಺༰ • ςεςΟϯάϑϨʔϜϫʔΫͷ໾ׂ • RSpec ͱ Minitest ͷ؆୯ͳίʔυྫ • γϯλοΫεͷൺֱʢxUnitܗࣜ vs Specܗࣜʣ • ϑϨʔϜϫʔΫͷൺֱʢRSpec vs Mintiestʣ • ߟ࡯ɿRSpec ͸ͳͥҒ͍ਓʹ޷͔Εͳ͍ͷ͔ʁ • ·ͱΊɿ࢖͏ͳΒͲͬͪʁ

Slide 13

Slide 13 text

ςεςΟϯά ϑϨʔϜϫʔΫͷ໾ׂ

Slide 14

Slide 14 text

ςεςΟϯάϑϨʔϜϫʔΫͷ໾ׂ • ςετίʔυΛ࣮ߦ͠ɺظ଴ͨ͠௨Γʹ ϓϩάϥϜ͕ಈ࡞͢Δ͜ͱΛݕূ͢Δ • ςετίʔυͱ͸ → ϓϩάϥϜΛςετ͢ΔϓϩάϥϜ • ݕূ݁Ռʢ੒ޭ or ࣦഊʣΛ։ൃऀʹใࠂ͢Δ

Slide 15

Slide 15 text

RSpec ͱ Minitest ͷ ؆୯ͳίʔυྫ

Slide 16

Slide 16 text

ςετର৅ͷϓϩάϥϜ class Greeter def say 'Hello, world!' end end ɾGreeter Ϋϥε ɾsay ϝιου ɾ‘Hello, world!’ ɹΛฦ͢

Slide 17

Slide 17 text

্͕ MinitestɺԼ͕ RSpec class GreeterTest < Minitest::Test def test_says_hello_world greeter = Greeter.new assert_equal 'Hello, world!', greeter.say end end describe Greeter do it 'says "Hello, world!"' do greeter = Greeter.new expect(greeter.say).to eq 'Hello, world!' end end ↑ xUnitܗࣜ ↑ Specܗࣜ

Slide 18

Slide 18 text

Minitest ͸ Specܗࣜ Ͱ΋ॻ͚Δ describe Greeter do it 'says "Hello, world!"' do greeter = Greeter.new greeter.say.must_equal 'Hello, world!' end end describe Greeter do it 'says "Hello, world!"' do greeter = Greeter.new expect(greeter.say).to eq 'Hello, world!' end end ↑ RSpec ʹͦͬ͘Γʂʂ

Slide 19

Slide 19 text

ൺֱͷ؍఺͸େ͖͘෼͚ͯೋͭ͋Δ γϯλοΫεͷൺֱ • xUnitܗࣜ vs Specܗࣜ ϑϨʔϜϫʔΫͱͯ͠ͷൺֱ • RSpec vs Minitest

Slide 20

Slide 20 text

xUnitܗࣜ vs Specܗࣜ Minitest RSpec & Minitest

Slide 21

Slide 21 text

xUnitܗࣜ vs Specܗࣜ Y6OJUܗࣜ 4QFDܗࣜ γϯλοΫε ϐϡΞ3VCZ %4-ʢυΩϡϝϯτ෩ʣ शಘͷϋʔυϧ 3VCZͷจ๏͕Θ͔Ε͹0, %4-Λ֮͑Δඞཁ͋Γ ϩδοΫͷࣗ༝౓ 3VCZͷݴޠػೳΛ ϑϧ׆༻Ͱ͖Δ %4-ʹ੍໿͞Ε΍͍͢ ݕূϝιου BTTFSU@FRVBM" # FYQFDU # UPFR" ·ͨ͸#NVTU@FRVBM" ςετͷߏ଄Խ Ϋϥεͷܧঝ·ͨ͸ ແཧʹߏ଄Խ͠ͳ͍ ϒϩοΫΛωετͤ͞Δ ໋໊ͷࣗ༝౓ Ϋϥε໊΍ϝιου໊ͷ ॏෳʹ஫ҙ͕ඞཁ ໋໊͸ൺֱతࣗ༝ อकੑ ڽͬͨίʔυΛॻ͔ΕΔͱ ղੳ͕େมͦ͏ %4-ͷϧʔϧΛҳ୤ ͠ͳ͚Ε͹อक͠΍ͦ͢͏

Slide 22

Slide 22 text

ςετΛߏ଄Խ͢Δྫ class User def initialize(name:, age:) @name = name @age = age end def greet if @age <= 12 "΅͘͸#{@name}ͩΑɻ" else "๻͸#{@name}Ͱ͢ɻ" end end end ৚݅ʹԠͯ͡ςετίʔυ Λߏ଄Խ͍ͨ͠

Slide 23

Slide 23 text

Specܗࣜ Ͱߏ଄Խ͢Δ৔߹ describe User do before do puts 'Test start.' end describe '#greet' do before do puts 'Test start in #greet.' end let(:user) { User.new(name: 'ͨΖ͏', age: age) } subject { user.greet } context '12ࡀҎԼͷ৔߹' do let(:age) { 12 } it { is_expected.to eq '΅͘͸ͨΖ͏ͩΑɻ' } end context '13ࡀҎ্ͷ৔߹' do let(:age) { 13 } it { is_expected.to eq '๻͸ͨΖ͏Ͱ͢ɻ' } end end end ϒϩοΫͰάϧʔϓԽ (ߏ଄Խ)

Slide 24

Slide 24 text

xUnitܗࣜ Ͱߏ଄Խ͢Δ৔߹ class UserTest < Minitest::Test def setup puts 'Test start.' end end module CommonMethods def setup super puts 'Test start in #greet.' @user = User.new(name: 'ͨΖ͏', age: @age) end end class UserTestWhenUnder12 < UserTest prepend CommonMethods def setup super @age = 12 end def test_greet assert_equal '΅͘͸ͨΖ͏ͩΑɻ', @user.greet end end class UserTestWhenAbove13 < UserTest # ͭͮ͘… ܧঝͨ͠Γɺ Ϟδϡʔϧ࡞ͬͨΓɺ prepend ͨ͠Γ super ݺΜͩΓ…

Slide 25

Slide 25 text

Ͱ΋ߏ଄Խ͠ͳ͍ํ͕γϯϓϧ class UserTestSimplified < Minitest::Test def setup puts 'Test start.' end def test_greet puts 'Test start in #greet.' user = User.new(name: 'ͨΖ͏', age: 12) assert_equal '΅͘͸ͨΖ͏ͩΑɻ', user.greet user = User.new(name: 'ͨΖ͏', age: 13) assert_equal '๻͸ͨΖ͏Ͱ͢ɻ', user.greet end end ͥΜͿϑϥοτͰ͑͑΍Μ

Slide 26

Slide 26 text

xUnitܗࣜ vs Specܗࣜ Y6OJUܗࣜ 4QFDܗࣜ γϯλοΫε ϐϡΞ3VCZ %4-ʢυΩϡϝϯτ෩ʣ शಘͷϋʔυϧ 3VCZͷจ๏͕Θ͔Ε͹0, %4-Λ֮͑Δඞཁ͋Γ ϩδοΫͷࣗ༝౓ 3VCZͷݴޠػೳΛ ϑϧ׆༻Ͱ͖Δ %4-ʹ੍໿͞Ε΍͍͢ ݕূϝιου BTTFSU@FRVBM" # FYQFDU # UPFR" ·ͨ͸#NVTU@FRVBM" ςετͷߏ଄Խ Ϋϥεͷܧঝ·ͨ͸ ແཧʹߏ଄Խ͠ͳ͍ ϒϩοΫΛωετͤ͞Δ ໋໊ͷࣗ༝౓ Ϋϥε໊΍ϝιου໊ͷ ॏෳʹ஫ҙ͕ඞཁ ໋໊͸ൺֱతࣗ༝

Slide 27

Slide 27 text

࣮ࡍʹࠔ͍ͬͯΔํͷπΠʔτ https://twitter.com/pacojp/status/615138242006880256

Slide 28

Slide 28 text

xUnitܗࣜ vs Specܗࣜ Y6OJUܗࣜ 4QFDܗࣜ γϯλοΫε ϐϡΞ3VCZ %4-ʢυΩϡϝϯτ෩ʣ शಘͷϋʔυϧ 3VCZͷจ๏͕Θ͔Ε͹0, %4-Λ֮͑Δඞཁ͋Γ ϩδοΫͷࣗ༝౓ 3VCZͷݴޠػೳΛ ϑϧ׆༻Ͱ͖Δ %4-ʹ੍໿͞Ε΍͍͢ ݕূϝιου BTTFSU@FRVBM" # FYQFDU # UPFR" ·ͨ͸#NVTU@FRVBM" ςετͷߏ଄Խ Ϋϥεͷܧঝ·ͨ͸ ແཧʹߏ଄Խ͠ͳ͍ ϒϩοΫΛωετͤ͞Δ ໋໊ͷࣗ༝౓ Ϋϥε໊΍ϝιου໊ͷ ॏෳʹ஫ҙ͕ඞཁ ໋໊͸ൺֱతࣗ༝ อकੑ ڽͬͨίʔυΛॻ͔ΕΔͱ ղੳ͕େมͦ͏ %4-ͷϧʔϧΛҳ୤ ͠ͳ͚Ε͹อक͠΍ͦ͢͏

Slide 29

Slide 29 text

RSpec vs Minitest

Slide 30

Slide 30 text

RSpec vs Minitest 34QFD .JOJUFTU ར༻཰ɺ৘ใྔ ߴ͍ɺଟ͍ ௿͍ɺগͳ͍ σϑΥϧτͷػೳ ๛෋ ඞཁ࠷খݶ ʢϓϥάΠϯͰ௥Ճʣ ޙํޓ׵ੑͷҡ࣋ Կ౓͔େ͖ͳมߋ͋Γ ଟগ͋Γ ఏڙܗଶ 3VCZඪ४Ͱ͸ͳ͍ ཁHFNΠϯετʔϧ 3VCZඪ४όϯυϧ ·ͨ͸HFNΠϯετʔϧ 3BJMTͱͷؔ܎ ඪ४Ͱ͸ͳ͍ ཁηοτΞοϓ 3BJMTඪ४ 3BJMTνϡʔτϦΞϧͰ΋࠾༻ ຊମͷίʔυ ଟ͍ɺෳࡶ গͳ͍ɺγϯϓϧ ઃܭࢥ૝ ͢΂͕ͯୈҰڃΫϥε ΦϒδΣΫτ +VTU3VCZ

Slide 31

Slide 31 text

ར༻཰ͷൺֱʢւ֎ʣ http://www.techwars.io/fight/rspec/minitest/ Stack Overflowͷ࣭໰਺ ٻਓ਺ εΩϧอ༗ऀ਺ RSpec ͷํ͕ϙϐϡϥʔ 6818 34 275 280 3 15

Slide 32

Slide 32 text

Qiitaͷ౤ߘ਺ɺϑΥϩϫʔ਺ ౤ߘ਺ = 473 ϑΥϩϫʔ = 294 ౤ߘ਺ = 12 ϑΥϩϫʔ = 5 ৘ใྔ΋ଟ͍

Slide 33

Slide 33 text

RSpec vs Minitest 34QFD .JOJUFTU ར༻཰ɺ৘ใྔ ߴ͍ɺଟ͍ ௿͍ɺগͳ͍ σϑΥϧτͷػೳ ๛෋ ඞཁ࠷খݶ ʢϓϥάΠϯͰ௥Ճʣ ޙํޓ׵ੑͷҡ࣋ Կ౓͔େ͖ͳมߋ͋Γ ଟগ͋Γ 3VCZͱͷؔ܎ 3VCZඪ४Ͱ͸ͳ͍ ཁHFNΠϯετʔϧ 3VCZඪ४όϯυϧ ·ͨ͸HFNΠϯετʔϧ 3BJMTͱͷؔ܎ ඪ४Ͱ͸ͳ͍ ཁηοτΞοϓ 3BJMTඪ४ 3BJMTνϡʔτϦΞϧͰ΋࠾༻ ຊମͷίʔυ ଟ͍ɺෳࡶ গͳ͍ɺγϯϓϧ ઃܭࢥ૝ ͢΂͕ͯୈҰڃΫϥε ΦϒδΣΫτ +VTU3VCZ

Slide 34

Slide 34 text

RSpec ʹ͔͠ͳ͍ػೳ • ๛෋ͳϚονϟɺߴػೳͳϞοΫɺcontextɺ let!ɺshared examplesɺߦࢦఆ࣮ߦɺ υΩϡϝϯτܗࣜͷ݁Ռදࣔɺetc Minitest ʹ͔͠ͳ͍ػೳ • xUnit γϯλοΫεɺϕϯνϚʔΫςετɺ ฒྻ࣮ߦػೳɺϥϯμϜ࣮ߦ͕σϑΥϧτ ػೳͷൺֱ Minitest͸جຊతʹ ϓϥάΠϯͰରԠ

Slide 35

Slide 35 text

RSpec vs Minitest 34QFD .JOJUFTU ར༻཰ɺ৘ใྔ ߴ͍ɺଟ͍ ௿͍ɺগͳ͍ σϑΥϧτͷػೳ ๛෋ ඞཁ࠷খݶ ʢϓϥάΠϯͰ௥Ճʣ ޙํޓ׵ੑͷҡ࣋ Կ౓͔େ͖ͳมߋ͋Γ ଟগมߋ͋Γ

Slide 36

Slide 36 text

RSpec • A.should → expect(A).to • be_true → be_truthy • have(n).items → ഇࢭɺผgemԽ • ଞଟ਺ Minitest • test/unit ޓ׵API → ഇࢭ (Ver. 5) • A.must_equal → _(A).must_equal (Ver. 6ʁ) • assert_template ౳ → ഇࢭɺผgemԽ (Rails 5) ޙํޓ׵ੑΛࣺͯͨมߋ Ͱ΋Transpec Ͱ ࣗಈม׵Ͱ͖Δ

Slide 37

Slide 37 text

RSpec vs Minitest 34QFD .JOJUFTU ར༻཰ɺ৘ใྔ ߴ͍ɺଟ͍ ௿͍ɺগͳ͍ σϑΥϧτͷػೳ ๛෋ ඞཁ࠷খݶ ʢϓϥάΠϯͰ௥Ճʣ ޙํޓ׵ੑͷҡ࣋ Կ౓͔େ͖ͳมߋ͋Γ ଟগ͋Γ 3VCZͱͷؔ܎ 3VCZඪ४Ͱ͸ͳ͍ ཁHFNΠϯετʔϧ 3VCZඪ४όϯυϧ HFNΠϯετʔϧ΋Մ 3BJMTͱͷؔ܎ 3BJMTඪ४Ͱ͸ͳ͍ ཁηοτΞοϓ 3BJMTඪ४ 3BJMTνϡʔτϦΞϧͰ΋࠾༻ ຊମͷίʔυ ଟ͍ɺෳࡶ গͳ͍ɺγϯϓϧ

Slide 38

Slide 38 text

ίʔυྔͷൺֱ http://www.techwars.io/fight/rspec/minitest/ http://www.zenspider.com/pdf/2015_railsconf_ruby_on_rails_on_minitest.pdf Minitest RSpec ໿8.5ഒ ίʔυຊମ ίϝϯτ

Slide 39

Slide 39 text

RSpec vs Minitest 34QFD .JOJUFTU ར༻཰ɺ৘ใྔ ߴ͍ɺଟ͍ ௿͍ɺগͳ͍ σϑΥϧτͷػೳ ๛෋ ඞཁ࠷খݶ ʢϓϥάΠϯͰ௥Ճʣ ޙํޓ׵ੑͷҡ࣋ Կ౓͔େ͖ͳมߋ͋Γ ଟগ͋Γ 3VCZͱͷؔ܎ 3VCZඪ४Ͱ͸ͳ͍ ཁHFNΠϯετʔϧ 3VCZඪ४όϯυϧ ·ͨ͸HFNΠϯετʔϧ 3BJMTͱͷؔ܎ ඪ४Ͱ͸ͳ͍ ཁηοτΞοϓ 3BJMTඪ४ 3BJMTνϡʔτϦΞϧͰ΋࠾༻ ຊମͷίʔυ ଟ͍ɺෳࡶ গͳ͍ɺγϯϓϧ ύϑΥʔϚϯε ஗͍ʁʁʁ ଎͍ʁʁʁ

Slide 40

Slide 40 text

ύϑΥʔϚϯε ͷҧ͍ʹ͍ͭͯ • Minitest ͸଎͞ΛചΓʹ͍ͯ͠Δ͕ɺ RSpec ͱମײͰ͖Δ΄Ͳͷࠩ͸ͳ͍ؾ͕͢Δ Minitest RSpec 1000ʙ49000݅΋ ςετॻ͔ͳ͍͠… http://www.zenspider.com/pdf/2015_railsconf_ruby_on_rails_on_minitest.pdf ʁ

Slide 41

Slide 41 text

ࣗ෼Ͱܭଌͯ͠Έͨ • Everyday RailsͷςετΛ RSpec όʔδϣϯͱ Minitest όʔδϣϯ(Specܗࣜ)Ͱ࣮ߦ • ςετͷ݅਺͸ͲͪΒ΋ 82݅ ʢ಺༰΋ಉ͡ʣ • 20ճ ࿈ଓ࣮ߦͯ͠ฏۉλΠϜΛࢉग़ ݁Ռ ɾ34QFD  ඵ ɾ.JOJUFTU  ඵ ͋ΕʁRSpecͷ ํ͕଎͔ͬͨ…

Slide 42

Slide 42 text

ػೳతͳൺֱ͸͜͜·Ͱ

Slide 43

Slide 43 text

ͯ͞ɺ͔͜͜Β͸ͪΐͬͱ ओ؍త ͳ࿩Λ͠·͢

Slide 44

Slide 44 text

΋͠ͻͱ͔ͭ͠࢖͑ͳ͍ͳΒ Ͳͬͪ ΛબͿʁ

Slide 45

Slide 45 text

๻ ͩͬͨΒ

Slide 46

Slide 46 text

RSpecʂ

Slide 47

Slide 47 text

๻͕ RSpec ΛબͿཧ༝ • ҰݴͰ͍͏ͱɺଟػೳͰศར͔ͩΒ • ͢Ͱʹ RSpec ͷศརػೳΛϑϧ׆༻͍ͯ͠Δ ͷͰɺΘ͟Θ͟ػೳͷগͳ͍ϑϨʔϜϫʔΫʹ Ҡߦ͢ΔϝϦοτ͕ͳ͍ • ͨͩ͠ɺ୯७ͳςετͳΒ Minitest Ͱ΋OK • ηοτΞοϓ͕͍Βͳ͍ͷ͸େ͖ͳϝϦοτ

Slide 48

Slide 48 text

Minitest ͰؾʹͳΔ఺ • ϓϥάΠϯΛଟ༻͢Δͱ ػೳͷিಥ ΍ ϝϯςφϯε໰୊ ͰࠔΓͦ͏ʢܦݧ͋Γʣ • ෳ਺ͷγϯλοΫε͕͋ΔͷͰɺϝϯόʔʹ Αͬͯ ޷Έ͕෼͔Εͦ͏ʢωοτͷ৘ใ΋όϥόϥʣ • RSpec ʹൺ΂Δͱ·ͩ·ͩ ৘ใ͕গͳ͍ ӳޠ ͕ۤखͳਓ͸ಛʹେม͔΋

Slide 49

Slide 49 text

Ͱ΋ɺͪΐͬͱ଴ͬͯ

Slide 50

Slide 50 text

ΈΜͳʮRSpec͸ݏ͍ͩʯ ͬͯݴͬͯΔΜ͚ͩͲʁ

Slide 51

Slide 51 text

͋ͷ༗໊ͳ˔˔͞Μ ͩͬͯ΄Βʂ

Slide 52

Slide 52 text

http://togetter.com/li/827508

Slide 53

Slide 53 text

http://togetter.com/li/827508 34QFDʹ͍ͭͯͷٞ࿦

Slide 54

Slide 54 text

ͻͲ͍ݴΘΕΑ͏

Slide 55

Slide 55 text

೔ຊ͚ͩ͡Όͳͯ͘ ւ֎ Ͱ΋΄Βʂ

Slide 56

Slide 56 text

http://www.zenspider.com/pdf/2015_railsconf_ruby_on_rails_on_minitest.pdf

Slide 57

Slide 57 text

http://www.zenspider.com/pdf/2015_railsconf_ruby_on_rails_on_minitest.pdf

Slide 58

Slide 58 text

http://www.zenspider.com/pdf/2015_railsconf_ruby_on_rails_on_minitest.pdf

Slide 59

Slide 59 text

RSpec ͸ऴΘͬͨͷʁ ͜Ε͔Β͸ Minitest ͳͷʁ

Slide 60

Slide 60 text

ͳΜ͔༗໊ͳਓ΄Ͳ RSpec Λܟԕͯͦ͠͏

Slide 61

Slide 61 text

Whyʁ

Slide 62

Slide 62 text

That is because…

Slide 63

Slide 63 text

DIYerؾ࣭ ͕ڧ͍ਓ΄Ͳ MinitestʢಛʹxUnitʣΛ޷Ή ஫ɿ͋͘·Ͱ Ծઆ Ͱ͢

Slide 64

Slide 64 text

DIYerͬͯԿʁ • DIYer = Do It Yourself-er • ʮͦͷػೳɺͳ͍ͳΒࣗ෼Ͱ࡞Δͥʂʯͱ ߟ͑Δਓ • ͻ͍ͯ͸gem΍ϑϨʔϜϫʔΫΛΑ͘ ࡞͍ͬͯΔਓ

Slide 65

Slide 65 text

Minitest really is a testing framework for Do It Yourself-ers. Minitest͸ DIYer ͷͨΊͷςεςΟϯά ϑϨʔϜϫʔΫͰ͢ɻ The Minitest Cookbook http://chriskottom.com/minitestcookbook/ ͜ͷຊ͔ΒώϯτΛಘ·ͨ͠

Slide 66

Slide 66 text

DIYerؾ࣭ ͕ڧ͍ਓ΄Ͳɾɾɾ • ԟʑʹͯ͠RubyͷΤΩεύʔτͳͷͰɺDSLΛ ֮͑Δ͙Β͍ͳΒϐϡΞRubyͰॻ͍ͨํ͕଎͍ • ࣗ෼Ͱ޷͖ͳΑ͏ʹ֦ு͍ͨ͠ͷͰɺgemͷ ίʔυ͸ খͯ͘͞ಡΈ΍͍͢ ํ͕๬·͍͠ • APIઃܭʹڧ͍ͩ͜ΘΓͱ৴೦͕͋ΔͷͰ ഽʹ߹Θͳ͍γϯλοΫε ͸࢖͍ͨ͘ͳ͍

Slide 67

Slide 67 text

݁Ռͱͯ͠ɺҒ͍ਓͷ RSpecݏ͍ൃݴ͕૿͑Δ

Slide 68

Slide 68 text

஫ɿ͋͘·Ͱ Ծઆ Ͱ͢

Slide 69

Slide 69 text

๻Έ͍ͨͳλΠϓ͸ RSpec ޲͖ʁ • DIYerؾ࣭ ͕ͦΕ΄Ͳڧ͘ͳ͍ • gem ΍ϑϨʔϜϫʔΫ͸ ࢖͏ଆ ͕ϝΠϯ • DSL Λ࢖͏͜ͱʹ఍߅͕ͳ͍ɻΉ͠ΖDSLʹ ϝϦοτΛײ͍ͯ͡Δ • ଟػೳ ͳํ͕͍Ζ͍ΖϥΫग़དྷͯ޷͖

Slide 70

Slide 70 text

·ͱΊɿRSpecͱMinitest ࢖͏ͳΒͲͬͪʁ

Slide 71

Slide 71 text

RSpecͱMinitestɺ࢖͏ͳΒͲͬͪʁ • Ұൠ࿦Ͱ͍͑͹ɺͲͬͪͰ΋ྑ͍ʢ౰ͨΓલʣ • ௕ॴ୹ॴ͸ͲͪΒʹ΋͋Δ • ݸਓతͳΦεεϝʢ๻ͷ޷Έʣ͸ RSpec • ͨͩ͠ɺDIYerؾ࣭͕ڧ͍ਓ΍ɺ ͱʹ͔͘ RSpec ͕ݏ͍ʂͱ͍͏ਓ͸আ͘ • Ͱ΋ࣗ෼Ͱ࢖͔ͬͯ֬ΊΔͷ͕ϕετͰ͢ʂ

Slide 72

Slide 72 text

͓͞Β͍ɿ͜ͷൃදͷΰʔϧ RSpec ͱ Minitest ͷಛ௃΍௕ॴ୹ॴΛൺֱ ͠ɺ ࣗ෼ʹ߹ͬͨϑϨʔϜϫʔΫΛબͿࡍͷ ࢀߟ৘ใ ʹͯ͠΋Β͏

Slide 73

Slide 73 text

Ғ͍ਓͷൃݴ΍ࠓ೔ͷ ൃද͸͋͘·Ͱ ࢀߟ৘ใ

Slide 74

Slide 74 text

RSpec ͱ Minitest ࢖͏ͳΒͲͬͪʁ

Slide 75

Slide 75 text

ࢲ͸ʮɹɹɹɹʯͰ͢

Slide 76

Slide 76 text

݁࿦Λग़͢લʹ·ͣ ྆ํ࢖ͬͯΈ͍ͯͩ͘͞!

Slide 77

Slide 77 text

Thank you.

Slide 78

Slide 78 text

Oh, one more thing

Slide 79

Slide 79 text

Everyday Rails ޷ධൃചதʂ ʴ ೔ຊޠ൛ಠࣗͷ ௥Ճίϯςϯπ https://leanpub.com/everydayrailsrspec-jp