Save 37% off PRO during our Black Friday Sale! »

RSpec概論

 RSpec概論

RSpecを触る前に僕が知っておきたかったこと

C768a38342644eb412ab0b15b7e9cbe5?s=128

shiraki hirotomo

September 14, 2018
Tweet

Transcript

  1. 34QFD֓࿦ कΓ΍͍͢ςετίʔυͷϧʔϧ5*14

  2. ΞδΣϯμ  ࣗݾ঺հ  34QFD֓ཁ  جຊػೳ  ޙʑࠔΓ͕ͪͳΞϯνϚφʔ 

    ςετ࣌ؒΛ୹͘͢Δ  ·ͱΊʙ͜ͷ͚̎ͭͩकΕ͹͖ͬͱʙ
  3. ͸͡Ίʹ ʮςετॻ͍ͨ͜ͱͳ͍ʂʯ ʮςετௐ΂͚ͨͲɺ΍ͬͨ͜ͱͳ͍ʂʯ ʮςετॻ͍ͯΈ͚ͨͲͬ͘͠Γ͖ͯͳ͍ʂʯ ੄໺Λ޿͛ͨͷͰɺίʔυΑΓ΋࿩͕ଟΊͰ͢ɻ

  4. ࣗݾ঺հ ໊લɿന໦޺๎ ձࣾɿגࣜձࣾϕʔγοΫʢ৽ଔ̏೥໨ʣ ͞ΘͬͯΔ͜ͱɿ3BJMT "84 RJJUBͱ͔UXJUUFSͱ͔ͷ*%ɿOBNJUPQ झຯɿϑΥʔτφΠτ

  5. ࣗݾ঺հ ࣗ෼ͷ஌ࣝͷ੔ཧͱ 34QFDʹ͍ͭͯ஌Βͳ͍ൃݟ͕͋Ε͹ͱࢥ͍ ࠓճͷษڧձͷ಺༰ʹ͠·ͨ͠ɻ

  6. ͜Ε͔Βઆ໌͢Δ͜ͱ͸ɺ ͜Μͳײ͡ͷ؀ڥͷਓ͕΍͖ͬͯͨ3TQFDͳͷͰ ΋͔ͨ͠͠Βઌೖ؍͕͋Δ͔΋͠Εͳ͍ͷͰɺ ͲΜͳαʔϏεʹؔΘ͖͔ͬͯͨͷઆ໌

  7. ձࣾͰ΍͖ͬͯͨ͜ͱ &$αΠτͷ঎඼؅ཧαΠτʢ಺෦ʣ࡞Γม͑ ϝσΟΞαΠτอकӡ༻ ࢿྉ੥ٻαΠτ৽ن ӳձ࿩ڭࣨݕࡧαΠτ৽ن ࢿྉ੥ٻαΠτอकӡ༻

  8. ձࣾͰ΍͖ͬͯͨ͜ͱ ͲΕ΋

  9. ձࣾͰ΍͖ͬͯͨ͜ͱ ̍ඵͰ΋མͪͨΒαʔϏε͕੒Γཱͨͳ͍ɾɾɾ

  10. ձࣾͰ΍͖ͬͯͨ͜ͱ ͱ͔Ͱ͸ͳ͍ɻ

  11. ձࣾͰ΍͖ͬͯͨ͜ͱ ͲΜͲΜػೳͷ௥Ճɾमਖ਼ͱ͔͠΍͍͢؀ڥ

  12. ձࣾͰ΍͖ͬͯͨ͜ͱ ͦΜͳ؀ڥͰςετίʔυΛॻ͍͖ͯ·ͨ͠

  13. ஫ҙ ԿΛςετ͢Ε͹͍͍ͷ͔ ͲΕ͘Β͍ςετ͢Ε͹͍͍ͷ͔ͱ͔ʹ ʮઈର͜ΕʯΈ͍ͨͳ΋ͷ͕ͳ͍

  14. ஫ҙ 34QFDͷϧʔϧʹ͍ͭͯߟ͑ͨ͜ͱΛ આ໌͍͖ͯ͠·͕͢ Ұ൪ྑ͍ϧʔϧ͸ ن໛ͱ͔αʔϏεՔಇ཰ͱ͔Λ౿·͑ͯ νʔϜϝϯόʔͱ૬ஊܾͯ͠ΊΔͷ͕ϕετ

  15. 34QFD֓ཁ " lςετzͷछྨ # ̎େςετϑϨʔϜϫʔΫ

  16. "lςετzͷछྨ 2"ςετ σΟϨΫλʔςετ ։ൃςετ

  17. ͦΕͧΕ໾ׂ͕ҧ͏

  18. ʮͲΕ͙Β͍ςετ͢Ε͹͍͍ͷʁʯ

  19. ͜ΕΛߟ͑ΔͨΊʹ͓͓͑ͯ͘͞

  20. 2"ςετ 2VBMJUZ"TTVSBODFʢ඼࣭อূʣ αʔϏε඼࣭Λอূʢόάɺૢ࡞ײʣ ˎ࡞ۀޮ཰ԽͷͨΊɺ͜͜Ͱ34QFD࢖ͬͯΔձࣾ΋ ͋ΔΒ͍͠

  21. σΟϨΫλʔςετ JTTVF௨Γʹ࣮૷͞Ε͍ͯΔ͔νΣοΫ ˎόάΛ໢ཏతʹνΣοΫ͢ΔΑ͏ͳ໾ׂͰ͸ͳ͍

  22. ։ൃςετ ։ൃऀ͕։ൃ͠΍͍ͨ͢Ίʹߦ͏ςετ ˎࣗ෼͸͜ͷύʔτͰΑ͘34QFD࢖͖ͬͯ·ͨ͠

  23. ̏ͭͷςετ ͜ΕΒ̏ͭͷςετͷॅΈ෼͚͕େࣄ ԿΛ34QFDͰ୲อ͢Δͷ͔

  24. ։ൃςετʹ͓͚Δ34QFD ୲อ͢Δ΋ͷ શϖʔδɺਖ਼ৗʹΞΫηεͰ͖Δ͔ શϝιουɺશΞΫγϣϯʹςετΛߦ͏ ى͜Γ͑ͳ͍ೖྗΛ༧૝ͯ͠ςετ

  25. ։ൃςετʹ͓͚Δ34QFD ୲อ͢Δ΋ͷ શϖʔδɺਖ਼ৗʹΞΫηεͰ͖Δ͔ શϝιουɺશΞΫγϣϯʹςετΛߦ͏ ى͜Γ͑ͳ͍ೖྗΛ༧૝ͯ͠ςετ ͠·ͤΜ

  26. ։ൃςετʹ͓͚Δ34QFD ओʹҎԼೋͭΛ୲อ͢Δ ϛε͕ى͜Γ͕ͪͳϩδοΫ ϏδωεతʹಛʹॏཁͳϩδοΫ

  27. ։ൃςετʹ͓͚Δ34QFD ϛε͕ى͜Γ͕ͪͳϩδοΫ ෳࡶͳϩδοΫ αʔϏεͷ޿͍ൣғͰ࢖ΘΕ͍ͯΔϩδοΫ

  28. ։ൃςετʹ͓͚Δ34QFD ϏδωεతʹಛʹॏཁͳϩδοΫ ੥ٻؔ܎ $7ϑϩʔ

  29. ։ൃςετʹ͓͚Δ34QFD 5*14୲อ͢Δ΋ͷΛߜΔ

  30. #̎େςετϑϨʔϜϫʔΫ NJOJUFTU 34QFD

  31. γϯϓϧ ϐϡΞ3VCZ ଟػೳ υΩϡϝϯτ෩ NJOJUFTU 3TQFD

  32. NJOJUFTU 3TQFD

  33. NJOJUFTUͱ34QFD NJOJUFTU͸γϯϓϧ͕͞ਓؾ 34QFD͸ߴػೳͳͷͰਓؾ ϑϨʔϜϫʔΫʹΑΔ଎౓ͷҧ͍͸ߟ͑ͳ͍͍ͯ͘ 3TQFDͷ΄͏͕೔ຊޠͷهࣄ͕ଟ͍ͷͰ͓͢͢Ί

  34. جຊػೳ ̏ͭͷTQFDͷ໾ׂʢNPEFM DPOUSPMMFS SFRVFTUʣ JUͱFYQFDU EFTDSJCFͱDPOUFYU GBDUPSZ USBJU TUVC

  35. ͪͳΈʹ υΩϡϝϯτ͸͜͜ IUUQSTQFDJOGPEPDVNFOUBUJPOSTQFDSBJMT

  36. "̏ͭͷTQFDͷ໾ׂ NPEFMTQFD Ϟσϧͷϝιου୯ҐͰͷςετ ϞσϧͷόϦσʔγϣϯςετ DPOUSPMMFSTQFD ඇਪ঑  BDUJPOͷΠϯελϯεม਺ͷ஋Λςετ ࢦఆͷVSMɺҙਤ͢ΔSFTQPOTFʹͳ͍ͬͯΔ͔ςετ SFRVFTUTQFD

    ࢦఆͷVSMɺҙਤ͢ΔSFTQPOTFʹͳ͍ͬͯΔ͔ςετ
  37. DPOUSPMMFSTQFDඇਪ঑ IUUQSTQFDJOGPCMPHSTQFDIBTCFFOSFMFBTFE SBJMTTVQQPSUGPSSBJMT SFRVFTUTQFDͰ͸ɺίϯτϩʔϥͷͭͷΞΫγϣϯʹूதͰ͖· ͕͢ɺίϯτϩʔϥςετͱ͸ҟͳΓɺϧʔλɺϛυϧ΢ΣΞελο ΫɺϥοΫͷϦΫΤετͱϨεϙϯεͷ྆ํ͕ඞཁͰ͢ɻ͜Ε͸ɺ ͋ͳ͕ͨॻ͍͍ͯΔςετʹݱ࣮ײΛ༩͑ɺDPOUSPMMFSTQFDʹڞ ௨͢Δଟ͘ͷ໰୊Λճආ͢Δͷʹ໾ཱͪ·͢ɻ ެࣜ௚༁

  38. NPEFMTQFDͱSFRVFTUTQFD ࢖͍෼͚ NPEFMTQFD͸σʔλΛςετ͢Δ SFRVFTUTQFD͸ݟͨ໨Λςετ͢Δ

  39. FYZBNBEBͰදࣔͯ͠Δ͔ςετ

  40. NPEFMTQFD͸σʔλΛ ਖ਼͍͠஋ͰΦϒδΣΫτੜ੒Ͱ͖Δ͔ IFMMPϝιου͕ػೳ͍ͯ͠Δ͔ʁ ͳͲ

  41. SFRVFTUTQFD͸ݟͨ໨Λ ZBNBEBʹΞΫηεͰ͖Δ͔ ϖʔδཁૉʹzZBNBEBͰ͢ɻzͱ͍͏
 ςΩετ͕ଘࡏ͢Δ͔ ͳͲ

  42. TQFDΛॻ͘લͷԼ४උ ςετ͠΍͍͢.7$ʹ͢Δ ϝιουͷҾ਺΍ฦΓ஋ͷܕΛἧ͑Δ WJFXͰม਺ͷఆٛͨ͠Γ࠶୅ೖͨ͠Γ͠ͳ͍ ΊͬͪΌWJFXʹ෼ذ͕ॻ͍ͯ͋ΔͷΛ΍ΊΔ

  43. "̏ͭͷTQFDͷ໾ׂ 5*14DPOUSPMMFSTQFD࢖Θͳ͍ 5*14NPEFMTQFDͰσʔλͷऔಘɾ੔ܗΛςετ 5*14SFRVFTUTQFDͰσʔλͷදࣔΛςετ

  44. #JUͱFYQFDU

  45. None
  46. None
  47. None
  48. None
  49. $DPOUFYUͱEFTDSJCF

  50. None
  51. None
  52. None
  53. None
  54. EFTDSJCF DPOUFYU JU EFTDSJCFɿϝιου୯ҐͳͲͷ·ͱ·ΓͰғΉ DPOUFYUɿ৔߹෼͚ͰғΉ JUɿ࠷খ୯ҐͰғΉ

  55. EFTDSJCF DPOUFYU JU 5*14 EFTDSJCF DPOUFYU JUΛ࢖ͬͯυΩϡϝϯτ෩ʹॻ͘

  56. ͪͳΈʹ

  57. ͲͬͪͰ΋PL ˎ͜ͷ৔߹͸DPOUFYUͷ΄͏͕͍͍͚ͲΤϥʔͱ͔ʹ͸ͳΒͳ͍

  58. ߦ਺ࢦఆ࣮ͯ͠ߦ ASTQFDϑΝΠϧ໊ߦ൪߸AͰ࣮ߦ

  59. %CFGPSFͱMFU

  60. None
  61. JU಺Λ؆ܿʹ͢ΔͨΊʹ

  62. None
  63. None
  64. MFUͱMFU

  65. MFUͱMFU w MFU஗ԆධՁɻʢJU಺Ͱݺ͹ͳ͍ͱ࣮ߦ͞Εͳ͍ʣ w MFU֤JU͝ͱͷ࣮ߦલʹධՁɻCFGPSFͱҰॹ

  66. None
  67. None
  68. MFUͱCFGPSFͷ࢖͍෼͚ JU಺Ͱࢀর͢Δ͔Ͳ͏͔ MFUͷ৔߹͸ɺJU಺Ͱࢀর͢Δ CFGPSFͷ৔߹͸ɺJU಺Ͱࢀর͠ͳ͍

  69. %CFGPSFͱMFU 5*14CFGPSF MFUͰJU಺Λγϯϓϧʹ 5*14CFGPSFͰࢀর͠ͳ͍Ϩίʔυͱ͔Λࣄલ४උ 5*14MFUͰJU಺Ͱࢀর͢Δ஋Λࣄલ४උ

  70. %GBDUPSZ

  71. %GBDUPSZ 6TFS OBNFඞਢ CJSUIQMBDFඞਢ CJSUIEBZඞਢ UFMඞਢ KPCඞਢ

  72. None
  73. σϑΥϧτͷ஋Λ༻ҙ͢Δ

  74. None
  75. JU಺Ͱҙࣝ͢Δ͜ͱΛߜΕΔ 6TFSΦϒδΣΫτ࡞੒͢Δ 6TFSIFMMP͕ਖ਼͘͠ಈ࡞͍ͯ͠Δ͔

  76. %GBDUPSZ 5*14ΦϒδΣΫτΛ࡞ΔͨΊͷهड़ΛݮΒ͢

  77. %TUVC ϞσϧͷϝιουΛ্ॻ͖͠ɺฦΓ஋ΛݻఆͰ͖Δ

  78. %TUVC

  79. ྫ Ϋϥεɿ1SFG ϝιουɿEJTUBODF QSFG QSFG  "1*ɿ(PPHMF.BQ"1*

  80. None
  81. ͜ͷςετͷԿ͕໰୊ʁ

  82. ̎ͭͷϝιουΛςετͯ͠Δ ͜ͷςετͰ ʮݝͷڑ཭Λࢉग़͢Δʯ ʮ(PPHMF.BQ"1*͕ݝͷҐஔ৘ใΛࢉग़͢Δʯ

  83. ͭ·Γɾɾɾ ʮ(PPHMF.BQ"1*ʯ͕͚͜Δͱ 1SFGEJTUBODFͷܭࢉ͕ਖ਼ͯ͘͠΋͚͜Δ

  84. ςετର৅ͷϝιου͚ͩͰ ⭕ʮݝͷڑ཭Λࢉग़͢Δʯ ❌ʮ(PPHMF.BQ"1*͕ݝͷҐஔ৘ใΛࢉग़͢Δʯ

  85. ͜͏ͩͱ͢Δͱɾɾɾ (PPHMF.BQ"1*TFBSDI Ҿ਺ͷݝͷҐஔ৘ใΛऔಘ͢Δ

  86. BMMPX PCK UPSFDFJWF NFUIPE XJUI BSH BOE@SFUVSO WBMVF  BMMPX

    PCK UPSFDFJWF NFUIPE BOE@SFUVSO WBMVF
  87. ର৅ͷΈͷςετʹͳΔ 1SFGEJTUBODFͷΈͷςετ ΋͠(PPHMF.BQ"1*ଆͰ͚ͯͯ͜΋ςετ͕௨Δ ͳ͚͔ͥͨ͜ͷௐࠪͷ͕࣌ؒল͚Δ

  88. %TUVC 5*14ςετର৅ʹͳΔϝιουΛߜΔ

  89. TUVCͱNPDL εΩοϓ ࢀߟɿ IUUQKBOHBKBODPNCMPHFYQFDU BOEBMMPXJOSTQFD

  90. ΞϯνϚφʔ " EFTDSJCFɺDPOUFYUɺJUͷ࢖͍ํ # MFU CFGPSFͷҐஔʢEFTDSJCFͷ֎ʹग़͞ͳ͍ʣ $ ్தͰVQEBUF % ฒͼॱܥϝιουͰ΍Γ͕ͪͳςετ

  91. "EFTDSJCFɾDPOUFYUɾJU Ͳ͏͍͏෩ʹͰ΋ॻ͚Δ

  92. None
  93. ͜ΕͰΤϥʔ͕ى͖Δͱ AFYQFDU  UPFRAʹͯ͠ΈΔ

  94. None
  95. w AAҎ͕߱FYQFDUͰ͖͍ͯͳ͍

  96. "EFTDSJCFɾDPOUFYUɾJU JU಺ͰԿݸ΋FYQFDU͠ͳ͍ ్தͰ͚͜Δͱςετ͕தஅͯ͠͠·͏ FYQFDU͕ଟ͍ͱԿ͕ਖ਼ৗ͔෼͔ΓͮΒ͍

  97. ࠷খ୯ҐΛJUͰғΉ

  98. None
  99. ΋ͬͱ෼͔Γ΍͘͢

  100. l·ͱ·ΓzΛEFTDSJCFͰ l৔߹෼͚zΛDPOUFYUͰ

  101. None
  102. Կ͕͍͍ͷʁ Τϥʔى͖ͨ࣌ͷείʔϓΛখ͘͞Ͱ͖Δ ྫ͑͹ɺAAʹͳΓ͚ͨ͜ͱ͖ ෦෼తʹࣺͯ΍͍͢ ྫ͑͹ɺՃ๏ϝιουΛશ࡟আͨ͠ͱ͖

  103. "EFTDSJCFɾDPOUFYUɾJU 5*14EFTDSJCFͰz·ͱ·ΓzΛғΉ 5*14DPOUFYUͰz৔߹෼͚zΛғΉ 5*14JUͰz࠷খ୯ҐzΛғΉ

  104. #MFU CFGPSFͷҐஔ

  105. None
  106. l࢛ଇԋࢉz௚ԼʹMFU Ճݮ৐আͦΕͧΕͷςετ͕େ͖͘ͳΔͱ

  107. None
  108. ͭΒ͍

  109. EFTDSJCFͷ֎ʹMFUΛग़͢ͱ ୯७ʹίʔυ͕ಡΈͮΒ͍ είʔϓ͕޿͕ͬͯ͠·͏ ͪͳΈʹɺա౓ͳڞ௨ԽΛͨ࣌͠ʹى͖΍͍͢ɻ

  110. #MFU CFGPSFͷҐஔ 5*14EFTDSJCFͷ֎ʹMFUΛग़͞ͳ͍

  111. $్தͰVQEBUF

  112. None
  113. ྫ͑͹ɺԿΒ͔ͷมߋ͕͋Γ MFU OVNCFS \^ʹ͢Δ͜ͱʹͳΓ·ͨ͠

  114. None
  115. lQPJOUz͚͚ͩͯ͘͜Εͳ͍ ଞͱҰ༷ʹมߋ͞Εͳ͍ͷͰݟམͱͯ͠͠·͏

  116. $్தͰVQEBUF 5*14JU಺ͱ͔ͰVQEBUF͠ͳ͍

  117. %ฒͼॱܥϝιουͷςετ ͜Εʹ͍ͭͯ͸RJJUB IUUQTRJJUBDPNOBNJUPQJUFNT CGG⒎FEG

  118. ςετ࣌ؒΛ୹͘ " ςετͷ਺ΛݮΒ͢ # ແବͳϨίʔυΛ࡞Βͳ͍ $ DSFBUFΑΓ΋CVJME % UFTURVFVFΛ࢖͏

  119. "ςετͷ਺ΛݮΒ͢ ΧόϨοδΛ௥͏ඞཁ͕͋Δ͔ʁ SFRVFTUTQFDΛNPEFMTQFDʹஔ͖׵͑Εͳ͍ ͔

  120. #ແବͳΠϯελϯε MFUɺCFGPSFͳͲͰ࡞͍ͬͯͳ͍͔ GBDUPSZͰඥ෇͚͕ଟ͘ͳͬͯͳ͍͔

  121. $DSFBUFΑΓ΋CVJME DSFBUF͸ϞσϧΦϒδΣΫτ͕ੜ੒ͯ͠อଘ͢Δ CVJME͸ϞσϧΦϒδΣΫτΛੜ੒͢Δ

  122. % UFTURVFVF HFNIUUQTHJUIVCDPNUNNUFTURVFVF ςετΛฒྻ࣮ߦͰ͖Δ σϑΥϧτͷಉ࣮࣌ߦ਺͸$16ͷίΞ਺

  123. ·ͱΊ

  124. 34QFDશવ஌Βͳͯ͘΋

  125. αʔϏε͝ͱʹ34QFDͷϧʔϧ͕ಛʹͳͯ͘΋

  126. ؆୯ʹ࣮ݱՄೳͳ ࠷௿ݶͷ

  127. ϝϯςφϯε͠΍͍͢ ςετίʔυʹ͢ΔͨΊͷ৺͕͚͸

  128. ͨͬͨ̎ͭ

  129. EFTDSJCF DPOUFYU JUΛਖ਼͘͠࢖͏ EFTDSJCFͷ֎ʹMFUΛग़͞ͳ͍

  130. ͜ͷೋ͕ͭ࠷༏ઌ

  131. ͜ΕΛϕʔεʹ

  132. ։ൃςετͱͯ͠Ͳ͜·Ͱςετ͢Δ͔ NPEFMTQFDͱSFRVFTUTQFDͷॅΈ෼͚ JU಺ͰԿݸ΋FYQFDU͠ͳ͍ ్தͰVQEBUF͠ͳ͍

  133. جૅ͔Β34QFDΛ஌Γ͍ͨ 3TQFDʹΑΔ3BJMTςετೖ໳ ిࢠॻ੶ͷΈ ҏ౻३Ұ͞ΜͷRJJUB #FUUFS4QFDT ͜ΕಡΈͳ͕Β͕͍͍͔΋ʮαϤφϥ#FUUFS4QFDT ʯ ެࣜυΩϡϝϯτ

  134. ΋ͬͱϝϯςφϯε͠΍͘͢ Մಡੑͷߴ͍ςετίʔυΛॻͨ͘Ίͷ͓࡞๏ू IUUQTHJUIVCDPNXJMMOFUSTQFDTUZMFHVJEF