https://k-ruby.com/kagoshima-rubykaigi02/
RubyͰ͡ΊΔࣗಈςετࣛࣇౡRubyձٞ02େխ࢙ʢOKURA Masafumiʣ2022-03-04, mark MEIZAN
View Slide
ࣗಈςετ
ॻ͍͍ͯΔਓ—
ࠓͷඪ
ࣗಈςετʹ͍ͭͯͷ֓ཁͷཧղ
ࠓͷ͓1. ࣗಈςετʹ͍ͭͯ2. Rubyʹ͓͚Δࣗಈςετ3. ྑ͍ࣗಈςετͱ4. ࣮ԋʂςετϑΝʔετ
ͦͷલʹ
ࣗݾհ
Okura.introduce(self)• ໊લɿେխ࢙• ॴଐɿϑϦʔϥϯε• ՝֎׆ಈɿKaigi on RailsɺGrow.rbɺRubygems CodeReading෦ɺ֤छొஃɺOSS׆ಈɺRails GirlsίʔνɺϑΟϤϧυϒʔτΩϟϯϓͷΞυόΠβʔ• ॳࣛࣇౡ
1. ࣗಈςετʹ͍ͭͯ
ࣗಈςετͱ
ϓϩάϥϜͱ࣮ͯ͠͞Εͨςετ
ϓϩάϥϜͳͷͰࣗಈԽ͕؆୯
ςετͳͷͰ͋ΔछͷݕূΛߦ͏
ࣗಈςετʹ͍ͭͯ1. ࣗಈςετͷԸܙ2. ࣗಈςετͷछྨ3. ࣗಈςετͷҙ
1.1 ࣗಈςετͷԸܙ
ࣗಈςετԿ͕خ͍͠ͷ͔ʁ• ίʔυʹର͢ΔυΩϡϝϯτʹͳΔ• ίʔυͷWhatΛઆ໌͢Δ• όάͷ࠶ൃʢϦάϨογϣϯʣΛ͙• ϦϑΝΫλϦϯάͷॿ͚ʹͳΔʢ΄΅ඞਢʣ• ʢςετΛઌʹॻ͘߹ʣίʔυͷ্࣭͕͕Δ• ʮςετϑΝʔετʯ
1.2 ࣗಈςετͷछྨ
ࣗಈςετͷछྨ• ୯ମςετʢϢχοτςετʣ• ଞͷίϯϙʔωϯτ͔ΒΓͯ͠ςετ• ݁߹ςετ• ͍͔ͭ͘ͷίϯϙʔωϯτΛΈ߹Θͤͯςετ
1.3 ࣗಈςετͷҙ
ࣗಈςετͰҙ͖͢͜ͱ• ʮόά͕ͳ͍ʯ͜ͱͷূ໌ʹͳΒͳ͍• ʮςετ͕௨ͬͨʂˠόάͬͯͨorzʯΈ͍ͨͳ͜ͱΑ͋͘Δ• ίʔυΛॻ͍͔ͯΒςετΛॻ͘ͱେมʹͳΓ͕ͪ• ςετϑΝʔετͷํָ͕ʢݸਓͷҙݟͰ͢ʣ
͜ͷ࣌Ͱ͓͖͍͑ͯͨ͜ͱ
ࣗಈςετॻ͘ͷ
ࣗಈςετجຊతʹॻ͘• ʮςετϑΝʔετʯ͔ʮςετϥετʯ͔ͲͪΒͰΑ͍• MiniTest͔RSpec͔ͲͪΒͰΑ͍• ࡉ͔͍͜ͱׂͱؾʹ͠ͳ͍ͰΑ͍• ͱʹ͔͘ॻ͘
ॻ͔ͳ͍ޙչΑΓॻ͘ޙչ
2. Rubyʹ͓͚Δࣗಈςετ
Rubyͷੈքʹͨ͘͞Μͷςετgem͕͋Γ·͢
ςετgemͷখྨ1. ςετϑϨʔϜϫʔΫ2. ಛఆ༻్͚DSL3. αϙʔτϥΠϒϥϦ
2.1 ςετϑϨʔϜϫʔΫ
RubyͷςετϑϨʔϜϫʔΫ• RSpec• μϯϩʔυ͕࠷ଟɺ൚༻ςετDSLͰ͋Δ• MiniTest• xUnitܥ౷ɺεϐʔυͱγϯϓϧ͕͞Ϧ• Test::Unit• ࠷ݹͷςετϑϨʔϜϫʔΫɺxUnitܥ౷
2.2 ಛఆ༻్͚DSL
ಛఆ༻్͚DSL• Capybara• ϒϥβૢ࡞ͷͨΊͷDSL• Cucumber• ड͚ೖΕςετͷͨΊͷDSLɺຊޠ͕ॻ͚Δ
2.3 αϙʔτϥΠϒϥϦ
αϙʔτϥΠϒϥϦ• FactoryBot• ςετσʔλʢߏԽ͞Εͨσʔλʣͷੜ• Faker• ϥϯμϜσʔλʢϝʔϧΞυϨε໊લͳͲʣ• Timecop• ࣌ؒΛૢ࡞͢Δ
3. ྑ͍ࣗಈςετͱ
ྑ͍ࣗಈςετͷϙΠϯτ• ࣗಈςετίʔυͳͷͰɺྑ͍ίʔυͷݪଇΛద༻͢Δ• Մಡੑʢ໋໊ɺཻͷখ͞͞ͳͲʣ• దͳߏԽ• ࣮ߦ࣌ؒͷ͞• ແବͳσʔλੜΛආ͚ΔʢಛʹσʔλϕʔεΞΫηε͍ʣ• ୯ମςετʹدͤΔʢ݁߹ςετ͍ʣ
• RSpecͩͱྑ͍ςετʹ͍ͭͯٞʹͳΓ͕ͪ• letͱlet!ͱbeforeͷ͍͚• contextͱitʹຊޠΛ͑Δ͔ʁ• etc…• ϩʔΧϧͳ׳शʹै͏ͷ͕٢
4. ࣮ԋʂςετϑΝʔετ