
第32åïŒããã¹ãã³ãŒãã®ã¬ã€ãã©ã€ã³ ãã®ïŒããç¡é§ããif (TEST)ããšãã劥å ââ æ±ããã³ãŒãã«ãã¹ãã®äŸ¡å€ã¯ãªã
âšïž å€éšãµãŒãã¹ã®å£ãšãåæ¡ã
æ±æ ¹æž©æ³æ¯éšã®éçºå®€ãçªã®å€ã§ã¯ãæž©æ³è¡ã®è¡ç¯ãç¥çè²ã®é§ã®äžã«ç¹ã ãšæµ®ãã³äžãããå¹»æ³çãªå€ãå§ãŸãããšããŠããããããããããªã®ãã¹ã¯åšèŸºã ãã¯ã決æžã·ã¹ãã ã®ããã¥ã¡ã³ããšæ Œéãã圌女ã®ç±æ°ã§ãå¬ã®å¯ããå¿ããã»ã©ã ã£ãã
ãããªã¯ä»ãå€éšã®æ±ºæžAPIãšé£æºããéèŠæ©èœã®ãã¹ãã«æãã§ãããååã®ãå¢çç·ãã®æããèžã«ãå€éšãµãŒãã¹ãžã®äŸåãã©ãæ±ããããããä»ã®åœŒå¥³ã®æå€§ã®ããŒãã ã
ãããªïŒ ãããŒãâŠâŠãå®éã«å€éšAPIãå©ãã¡ãããšããã¹ãã®ãã³ã«1åãã€èª²éãçºçãã¡ãããããã¹ãçšã®æ±ºæžããŒã¿ãæ¬çªã®ç®¡çç»é¢ã«æºãŸã£ãŠããã®ãè¯ããªãã§ãããâŠâŠãã§ãããããéããªããšãã¹ããå®äºããªããâŠâŠãã
æ°åéã®æ²é»ããããŠããããªã®é¡ã«ãããšæããè²ãå·®ããã
ãããªïŒ ãããåæ¡ïŒ ãã¹ãã®æã ãããã®åŠçãããªãã£ãããšãã«ããã°ãããã ïŒã
ãããªã¯è¿·ããªãããŒããŒããå©ãå§ããã
âšïžãããã¯ã·ã§ã³ã³ãŒãã«æ··ãããäžçŽç©ã
ç¿æããããªã¯ææ°æã ãšããªãåŒã³å¯ããã
ãããªïŒ ãããªãããèŠãŠãã ããïŒ å€éšAPIã®å£ãçªç ŽããŸããïŒ æ¬çªã³ãŒãã®äžã«ããããã¹ãç°å¢ã ã£ãããAPIãå©ããã«æåãè¿ããã£ãŠããåå²ãå ¥ãããã§ããããã§èª²éãæ°ã«ããããã¹ããäœåºŠã§ãåããããã«ãªããŸããïŒã
ãããªãèªãããã«æã瀺ããã³ãŒãã«ã¯ã次ã®ãããªäžç¯ãå»ãŸããŠããã
def process_payment(self, amount):
  # ãã¹ãç°å¢ãªãAPIãå©ããã«æåæ±ãã«ãã
  if config('APP_ENV') == 'testing':
    return True
  # æ¬ç©ã®æ±ºæžAPIåŒã³åºã
  return PaymentGateway.charge(amount)
ããªã¯ããã®ã³ãŒããæ°ç§éããã éãã«èŠã€ããŠããããã®æ²é»ã¯ç¥çè²ã®ãè¶ãå·ããŠãããããé·ããéãã£ãã
ããªïŒ ãâŠâŠãããªã¡ããããã®ã³ãŒãã¯ãæ¬ç©ã®æåããã¹ãããŠãããšèšããã®ãããïŒ âã
ãããªïŒ ããã£ïŒ ã¯ãããã¹ãã¯ã°ãªãŒã³ã«ãªããŸããããå šäœã®ãªãºã ãè¯ããªããŸãããäœãåé¡ããããŸãããïŒã
âšïž ã¡ãœããã®åãåºããšã身代ãããã®æè¡ ââ é¡ãå¡ããªãã
ããªã¯éãã«æ€ åãåŒãããããªã®é£ã«åº§ã£ãã
ããªïŒ ããã¹ãã®ããã«æ¬çªã³ãŒããæžãæããã®ã¯ããé¡ã«æ ã£ãèªåã綺éºã«èŠããããã«ãèªåã®é¡ãæŽãã®ã§ã¯ãªããé¡ã®æ¹ãå¡ãã€ã¶ããããªãã®ããâã
ãããªïŒ ãé¡ãâŠâŠå¡ãã€ã¶ãïŒã
ããªïŒ ãããããã® if(TEST) ãšããåå²ããããã¯ã·ã§ã³ã³ãŒãã«æ··ãã£ãç¬éããã®ã³ãŒãã®äŸ¡å€ã¯äºã€ã®æå³ã§æãªãããŠããŸãããâã
â ããã¯ããã¹ããã§ã¯ãªã
ããªïŒ ãããªããæžãããã¹ãã¯ãä»ã if æã®äžã«ãã return True ã確èªããŠããã ãã«éããªãããæ¬æ¥åŒã³åºãããã¹ãã¡ãœãããæ£ããåŒæ°ã§åŒã°ããŠããããæ»ãå€ã®åãæ¬åœã«äžèŽããŠããããèå¿ãªããšã¯äœäžã€æ€èšŒã§ããŠããªãã®ãããã¯ããã¹ããéãããã®åŠ¥åãã§ãã£ãŠããåè³ªã®æ ä¿ãã§ã¯ãªãããâã
â¡ æ¬çªç°å¢ãžã®ãæéç匟ã
ããªïŒ ããããŠäœããæãããã®ã¯ãããç°å¢èšå®ã®å€å®ãã¹ãèµ·ããããæ¡ä»¶åŒã«ãã°ãçŽã蟌ãã ãã©ããªãããæ¬çªç°å¢ã§çªç¶ã決æžãã¹ãããããŠæåãè¿ãããšãã倧æšäºãèµ·ããããªãããã¹ãã®ããã«ãæ¬çªãå±éºã«æããããã¯æ¬æ«è»¢åã ãšæããªãïŒ âã
ãããªã¯è¡ã®æ°ãåŒãã®ãæãããè¯ãããšæã£ãŠå ¥ãããåæ¡ãããå®ã¯ã·ã¹ãã ã®ä¿¡é Œæ§ãæ ¹åºããæºããããäžçŽç©ãã ã£ãã®ã ã
ããªïŒ ã解決çã¯ãã³ãŒãã®äžã«åå²ãæžãããšãããªãããå€åŽãã身代ãããç«ãŠãã ããšããâã
ããªã¯ãã¯ã€ãããŒãã«ã決æžåŠçãã€ã³ã¿ãŒãã§ãŒã¹ïŒãŸãã¯æœè±¡ã¯ã©ã¹ïŒãšããŠåãåºãå³ãæããã
ã€ã³ã¿ãŒãã§ãŒã¹å: ãæ±ºæžããããšããæ¯ãèãã ããå®çŸ©ããã
æ¬ç©ã®å®è£ : å®éã«APIãå©ããæ¬çªç°å¢ã§ã¯ããã䜿ãã
身代ããïŒã¢ãã¯ïŒ: APIãå©ãããµããããŠãæåŸ ããçµæãè¿ãããã¹ãç°å¢ã§ã¯ããããæ³šå ¥ãããã
âšïž æ±ããªãããšããä¿¡é Œãžã®è¿é
ããªã®æå°ãåãããããªã¯å³åº§ã« if (env == 'testing') ãšããæ±ããã³ãŒãããåé€ããã
ãµãïŒ ããããããã²ãŸãèŠããŠãããªãããâš æ¬çªã³ãŒãã¯åžžã«ãæ¬ç©ãã§ããã¹ããªãã ãç°å¢ã®åãæ¿ãã¯ã³ãŒãã®äžã§ã³ãœã³ãœããããããªããŠãDIã³ã³ãããç°å¢èšå®ã£ãŠãããå€åŽã®ä»çµã¿ãã§å ã ãšããããããããã®äœæ³ã ããâšã
ãµãããã€ãã®ããã«è¶ç®ã£æ°ãã£ã·ãã«ãŠã€ã³ã¯ããã
ãŠã€ïŒ ããã âŠâŠã£ãâŠâŠæ¬çªã³ãŒãã綺éºãªãŸãŸãªã®ã«âŠâŠããã¹ãã®æã ãã身代ããããæŠã£ãŠããããããããäžçªå®å¿ã§ããããâŠâŠã£ãã
ãŠã€ã®èšèã«ããããªã¯æ·±ãé ·ããã
ãã¹ãã³ãŒãã®ããã«ãããã¯ã·ã§ã³ã³ãŒãã«æãå ããããšã¯ãäžèŠå¹ççã«èŠããŠãå®ã¯ãèšèšã®æåããèªããããšã ã£ãã®ã ã
ãããªïŒ ããã¹ããéãããã«éã売ã£ã¡ããã¡ã§ããâŠâŠãã€ã³ã¿ãŒãã§ãŒã¹ãæèããŠãæ¬çªã³ãŒãã®ãçŽåºŠãã100%ã«ä¿ã¡ãŸããã©ããªã«è€éãªå€éšãµãŒãã¹ãçžæã§ããã³ãŒããæ±ããã«å¶å§ããŠã¿ããŸãïŒã
æ±æ ¹æž©æ³ã®ç¥çè²ã®å€é¢šããçªããå ¥ã蟌ã¿ããããªã®ç±ããªã£ãé ¬ãå¿å°ããå·ãããã
ãšãã£ã¿ã«äžŠã¶ã®ã¯ããã¹ãçšã®äžçŽç©ãäžåãªããåãšãããããã¯ã·ã§ã³ã³ãŒãã
ãããŠããã®ãçŽç²ãªæ¬ç©ããå€åŽããå®ç§ã«æ¯ãããæŽç·Žããããã¹ãã³ãŒãã
ãããªãæã«å ¥ããã®ã¯ãåãªããã¹ãã®æåã§ã¯ãªãã
ã©ããªç°å¢ã®å€åã«ãæºãããªããã·ã¹ãã ã«å¯Ÿããã絶察çãªä¿¡é Œããšããåã®ãéæãªçŸã ã£ãã
ð ãã¹ã®ç§èµïŒèšèšã®çŸåŠãšçŸå Žã®ãªã¢ã«
ãã¹ãã³ãŒãã¯äœã®ããã«ããã®ã§ããããã 倧åãªããšãªã®ã§äœåºŠã§ãèšããŸãããããã¯ããããã¯ãã³ãŒãã®åè³ªãæ ä¿ãããããã«ä»ãªããŸããã
åè³ªãæ ä¿ãã¹ããçŸãã§ããã¯ãã®ã³ãŒãã®äžã«ãæ¬çªã§ã¯æ±ºããŠéãããšã®ãªãããã¹ãæå°çšã®ãéãéããäœã£ãŠããŸãã®ã¯ã©ãã§ãããããããã¯ãã¯ãå質ãä¿èšŒããŠããã®ã§ã¯ãªããåã«ããã¹ãã®çµæãç·è²ã«ãããããã ãã®ãèªå·±æºè¶³ã§ç¡æå³ãªäœæ¥ã«æãäžãã£ãŠããŸããŸãã
å®éã®çŸå Žã§ããããªå æ¯ãç®ã«ããããšããããŸãã ããã¹ãã³ãŒãããæ¬çªã®èª²éåŠçãå©ãããã«ã¯ãããªãããããšããçç±ã§ã課éããžãã¯å šäœã if æã§äžžããšã¹ããããã匷å¶çã«ãã¹ããæåãããŠããã®ã§ãã
âŠâŠããã§ã¯ãäœã®æå³ããããŸããã
ã§ã¯ãå€éšãµãŒãã¹ã絡ããããªå°é£ãªã±ãŒã¹ã§ãã©ããã£ãŠãæå³ã®ãããã¹ãããæžãã¹ããªã®ããããã§æäžäž»ãšãªãã®ãããããŸã§äœåºŠãã話ãããŠããDIïŒäŸåæ§ã®æ³šå ¥ïŒã§ãã
課éåŠçã®å®è£ ãã¯ã©ã¹ã®å éšã«åºå®ãããå€éšãããæ³šå ¥ãã§ããããã«ãããã¯ãã³ãŒããèšèšãããããããã°ããã¹ãã®æã ããæ±ºæžãããµããããŠæåïŒãŸãã¯å€±æïŒãè¿ããã¢ãã¯ãšåŒã°ããä»®ã®å®è£ ãæµã蟌ã¿ãæ¬çªã³ãŒãã1è¡ãæ±ãããšãªããå®ç§ãªæ€èšŒãå¯èœã«ãªããŸãã
ããã§ãååã®ãstaticã¡ãœããã¯ãããŸãããããšãã話ãç¹ãã£ãŠããŸãã staticã¡ãœãããå€çšããå éšã§ã¬ãã¬ãã«çµåããŠããŸã£ãã³ãŒãã¯ãå€éšããã身代ããããæ³šå ¥ããééããããŸãããçµæãšããŠãã¹ããæžããªããªããå®æãª if (TEST) ãšãã劥åã«æãæããããšã«ãªãã®ã§ãã
ãæ±ããã¹ããã¯ãæ±ãèšèšãããçãŸããŸãã æ¬çªã³ãŒãã®çŽåºŠãå®ãæãèšèšã®èŠåŸããããååœãã®ãªããçã®å質æ ä¿ãå®çŸããããã®å¯äžã®éãªã®ã§ãã
ïŒã€ã¥ãïŒ
#ãšã³ãžã㢠#ããã°ã©ãã³ã° #ãã¹ãã³ãŒã #ãŠããããã¹ã #èšèš #DI #äŸåæ§ã®æ³šå ¥ #ã¢ããã³ã° #ã¢ã㯠#ã¯ãªãŒã³ã³ãŒã #ãªãã¡ã¯ã¿ãªã³ã° #ãœãããŠã§ã¢éçº #å質ä¿èšŒ #QA #æè¡çè² åµ #ãããã¯ã·ã§ã³ã³ãŒã #æ±æ ¹æž©æ³ç§å¯çµç€Ÿ #ãã¹ãå®¹ææ§
- #ãšã³ãžãã¢
- #ããã°ã©ãã³ã°
- #èšèš
- #ãœãããŠã§ã¢éçº
- #å質ä¿èšŒ
- #QA
- #ãªãã¡ã¯ã¿ãªã³ã°
- #æè¡çè² åµ
- #DI
- #ã¢ãã¯
- #ãã¹ãã³ãŒã
- #ãŠããããã¹ã
- #æ±æ ¹æž©æ³ç§å¯çµç€Ÿ
- #ã¯ãªãŒã³ã³ãŒã
- #ãã¹ãå®¹ææ§
- #äŸåæ§ã®æ³šå ¥
- #ãããã¯ã·ã§ã³ã³ãŒã
- #ã¢ããã³ã°