20,000 Lieues Sous les Mersã®ãããã§ã«ç
ãã¹ãïŒããã¯ãŒãã»ãã£ãªããã¹ã»ã©ãã¯ã©ããã®ä»äºãç¥ã£ãŠãã人ãªã誰ã§ãç解ããããšããæå³ã§ïŒãèçè ãã§ããããšã«æ³šæããŠãã ããã
ãã¹ããšãã¹ãã®ãããã¯ãç¶ããŠãç§ãã¡ã®ã¢ãããŒããReact.jsã§æžãããã·ã³ã°ã«ããŒãžã¢ããªã±ãŒã·ã§ã³ïŒSPAïŒã§ã©ã®ããã«èŠãããã ãã¹ãé§åéçºïŒTDDïŒãããã«ã©ã®ããã«åœ¹ç«ã£ããããããŠç§ãã¡ãæ¥ãçç±ã«ã€ããŠå°ãæžããããšæããŸãã¬ãã¥ãŒãµãŒãšAPIãµãŒãã¹ããã¹ãã§èŠãããŠãããšããäºå®ã
ããã§jest ã ã¹ãããã·ã§ãããã¹ãããŸãã¯ã¹ããŒãªãŒ ã·ã§ãããèŠãããå Žåã¯ãããã«ãã®ã¡ã¢ãéããŠãã ããã ããã§æ°ããã©ã€ãã©ãªãŸãã¯ã¢ãããŒãããäœããèŠã€ãããå Žåã¯ãããã«éããŠãã ããã äžèšã®ãããã䜿çšããŸããã§ããã ããããããããã®ããŒã«ã䜿çšããŠæ°ãããããžã§ã¯ããéå§ããŸãããä»ã®ãšããã¯ãã®æ¹æ³ãå€æããŸããã
ãããã®ææ³ã®å€ãã¯ããŸããŸãªãµã€ãããã©ãŒã©ã ã§èª¬æãããŠããŸããããã¹ããã©ã®ããã«èŠããããããããŸããã ããã«ããããã®ãªã³ã¯ã以äžã«æäŸããŸãã
ããŒã«
ç§ãã¡ã«ã¯éåžžã«æšæºçãªãã®ãããã玳士çšã®ããŒã«ãããããããŸãã
ãã¹ããïŒ BDDã¹ã¿ã€ã«ã§ïŒå®è¡ããŠèšè¿°ããã«ã¯ã mochaã©ã€ãã©ãªã䜿çšããŸãã Sinonã¯ã¹ã¿ããšã¹ãã€ãæäŸãã chaiã©ã€ãã©ãªã®ãã¹ãé¢æ°ã䜿çšãã é µçŽ ã䜿çšããŠGUIèŠçŽ ãããŠã³ãããŸãã æ©èœãã¹ããŸãã¯ãšã³ãããŒãšã³ããã¹ããäœæããããã«ã jasmine framework㧠å床åšã䜿çšããŸãã
æ®å¿µãªããã ãã³ãã¹ãã«é©åãªéç¹ã眮ããŠããŸããã§ããããã®éšåã§è匱æ§ãæ€çŽ¢ããããã«äœ¿çšããã®ã¯ã nspã¢ãžã¥ãŒã«ãšnodesecurity.ioã ãã§ãã ã 確ãã«ãã¯ã©ã€ã¢ã³ãã«ã¯äœãèŠã€ãããŸããã§ãããããµãŒããŒã¢ãžã¥ãŒã«ã«ã¯äœããèŠã€ãããŸããã
ãŸãããã¹ãã®æ®µéã®1ã€ã¯ã eslintããŒã«ã䜿çšããŠã³ãŒãã®åœ¢åŒãšã¹ã¿ã€ã«ããã§ãã¯ããããšã§ãã
ãã¹ãé§åéçºã«ããã³ã³ããŒãã³ãé§åéçº
éçºãšãã¹ãã«ãããŠãç§ãã¡ã¯ãŸã æåãªãã¹ããã¡ãŒã¹ãã®ååãé å®ããŠããŸãã ãããŠãååãšããŠãå€ãã®ã¯ã©ã€ã¢ã³ãéçºè ã¯ããã®ããã¥ã¡ã³ãããŸã ååšããªããšãã«ãéçºããã»ã¹ã§ã©ã®ã¿ã°ãšã¹ã¿ã€ã«ã䜿çšããå¿ èŠãããã®ãââããããªããšãã«ãããã¥ã¡ã³ãã®HTMLæ§é ããã§ãã¯ãããã¹ããã©ã®ããã«æžãããšãã§ããŸãããšãã質åããããŸãã
ææ°ã®ã¯ã©ã€ã¢ã³ãã¢ããªã±ãŒã·ã§ã³éçºã¯ã ã³ã³ããŒãã³ãã®æŠå¿µã«åºã¥ããŠããŸã ã ãã¶ã€ãã®ã¬ã€ã¢ãŠãã¯ãå解ã®éçšã§ãè€åã³ã³ããŒãã³ããšåºæ¬ã³ã³ããŒãã³ãã«åå²ãããŸãã ã¯ã©ã€ã¢ã³ãã§TDDã«ã€ããŠè©±ããšãã¯ãã³ã³ããŒãã³ãã¬ãã«ãæå³ããŸãããã®GUIèŠçŽ ãpã¿ã°ãŸãã¯divã¿ã°ã䜿çšããŠå®è£ ãããŠãããã©ããã¯ãç¹ã«éèŠã§ã¯ãããŸãããå®è£ ãããããšãéèŠã§ãã ããªã㡠次ã®è€åã³ã³ããŒãã³ãïŒããŒãžïŒã®å®è£ ããŸã ãããŸããïŒ
ãã®ã³ã³ããŒãã³ãèªäœãšãã®å éšã¹ã±ã«ãã³ã®ååšã確èªãããã¹ãããéå§ã§ããŸãã
ãã¹ããã¢ããªã±ãŒã·ã§ã³ã®äžéšã§ããããšãå¿ããªãã§ãã ããããã®éšåã§ã¯ãä»ã®å Žåãšåãããã« ã ã èªåèªèº«ãç¹°ãè¿ããªããïŒDRYïŒ ã ãããªãã¯ãããå¿ èŠãšããŸãããïŒYAGNIïŒ ã ã·ã³ãã«ã§æããªâïŒKISSïŒãšã³ãŒãã®æž æœããä¿ã£ãŠãã ãã ã
ãã¹ããã¡ã€ã«ã¯ããããããã¹ã察象ã®ã³ã³ããŒãã³ããããŠã³ããããã®ã³ã³ããŒãã³ãã§äœæ¥äžã«ãŠãŒã¶ãŒãå®è¡ã§ããã¢ã¯ã·ã§ã³ã§ã¹ãã€ãŠã§ã¢ããã³ã°ã¢ãããããã¡ã¯ããªã¡ãœããã®èª¬æã§å§ãŸããŸãã ã»ãšãã©ã®å Žåãããã¯ãã¡ãããããŒã¿ãŠã§ã¢ããŠã¹ã®å€æŽã«ãµãã¹ã¯ã©ã€ãããŠããã³ã³ããŒãã³ãã«é©çšãããŸãã ã¢ã¯ã·ã§ã³ã¯ãæ¡ä»¶ä»ãã§ãç¶æ ãå€åããã¹ãã¬ãŒãžïŒé çªã«æ°žç¶ã¹ãã¬ãŒãžãšéæ°žç¶ã¹ãã¬ãŒãžã«åå²ãããïŒãšããŒãžããã²ãŒã·ã§ã³ã«åå²ã§ããŸãã
ãã¡ã¯ããªã¡ãœããã¯ã䟿å®äžãé µçŽ ã©ã€ãã©ãªã䜿çšããŠããŠã³ãããã sinonã©ã€ãã©ãªã¹ãã€ã«çœ®ãæããããã³ã³ããŒãã³ãããã³ã¢ã¯ã·ã§ã³é¢æ°ãè¿ããŸãã ããã¯ãªããžããªã«ãµãã¹ã¯ã©ã€ããããè€åã³ã³ããŒãã³ãã§ãããããã³ã³ããŒãã³ããã¡ã€ã«ã§ãªããžããªããšãã¥ã¬ãŒãããªãããã«1ã€ã®ããªãã¯ã䜿çšããŠã2ã€ã®æ¹æ³ã§ãšã¯ã¹ããŒãããŸãã
1ã€ç®ã¯ãã¹ãçšã§ã2ã€ç®ã¯ãªããžããªã®ç¶æ ã®å€æŽã«ãµã€ã³ã¢ããããããã«çŽæ¥é«æ¬¡ã³ã³ããŒãã³ãã«ã©ãããããŠããŸãã
ãããŠããããæåã®ãèµ€ããã¹ãã§ã
ã³ã³ããŒãã³ãã®renderã¡ãœãããå®è£ ãã èµ€ç·ã®ãªãã¡ã¯ã¿ãªã³ã°ã®ãã¹ãŠã®æšæºã«åãçµã¿ãŸãã ãã®åŸããã¹ããå床å®è¡ããŸãã
ããã«ããã¹ã察象ã®èŠªèŠçŽ ïŒè«çãã©ã°ããã¿ã³åããã¹ãããŒã¿ïŒãã転éãããå€ã«å¿ããŠãåã蟌ã¿ã³ã³ããŒãã³ãã®ããããã£ãçŸåšã®ç¶æ ãããã³ç¹æ§ããã詳现ã«ãã¹ãã§ããŸãã
次ã®ã¹ãããã¯ãã¢ã¯ã·ã§ã³ãæ€èšŒããããšã§ãã ããã¯ã test-firstã®ã¹ã¿ã€ã«ã§ãå®è¡ã§ããŸãã ãã¢ã¯ãã£ããªãããžã§ã¯ããååŸãã¢ã¯ã·ã§ã³ã¯ãã³ã³ããŒãã³ãã®ããŠã³ãæã«ã³ã³ããŒãã³ãã®ã©ã€ããµã€ã¯ã«ã¡ãœããå ã§åŒã³åºããããšæ³å®ããŠããŸãã åæã«ããã¿ã³ãæŒããããšé·ç§»ã¢ã¯ã·ã§ã³ãåŒã³åºãããŸãã ããªãã¡ ãã¿ã³ã®ã¯ãªãã¯ãã·ãã¥ã¬ãŒãããå¿ èŠããããŸãã ãããã®ä»®å®ã«ãããã³ã³ããŒãã³ãã«ããžãã¯èªäœãå®è£ ããåã§ãã次ã®ãã¹ãã®ãã¢ãå®è£ ã§ããŸãã ãã1ã€ã®ããªãã¯ã¯ãã¢ã¯ã·ã§ã³çšã«åå¥ã®ã€ã³ããŒããããããŒã ã¹ããŒã¹ã䜿çšããããšã§ããããã«ãããã¿ãŒã²ããã³ã³ããŒãã³ãã®ã€ã³ããŒãã»ã¯ã·ã§ã³ãã¯ãªãŒã³ã«ãªããã¢ãã¯ãã¹ã¿ããã¹ãã€ã®ãã¹ãæã«äŸ¿å©ã«ãªããŸãã
åäœäžã®TDDã åæ§ã«ããã®ã³ã³ããŒãã³ããå®å šã«å®è£ ãããŸã§é²ã¿ãŸãã ãã®ã¢ãããŒãã«ãããã·ã³ãã«ã§åºæ¬çãªãã®ããããªããžããªã«è€åããŠãµãã¹ã¯ã©ã€ããããã®ãŸã§ããã¹ãŠã®ã³ã³ããŒãã³ããéçºããŸããã
ãç§ã¯ãã¢ããªã±ãŒã·ã§ã³ã³ãŒããçŽæ¥æžãããããã¹ããéçºãããããã§ãã
Andrey Antonyukãéçºè
ãããŠãã¯ããã»ãšãã©èšåããã®ãå¿ããŠããã®ã§ãã³ãŒãã§ãã¹ããæ··ä¹±ãããªãããã«ããã¹ãããŒã¿ãšãã¹ãæ§é ãå¥ã ã®ãã¡ã€ã«ã«å ¥ããŸããã
æ©èœãã¹ã
ãã¹ãŠããåäœããã³ã·ã¹ãã ãã¹ãã§ã¿ãŒã²ããã³ã³ããŒãã³ãã培åºçã«ãã¹ãããŠããããã«èŠããŸãã ãã ããã³ã³ããŒãã³ãã®ããŠã³ãã¯äººå·¥çãªç°å¢ïŒ TestBed ïŒã§ãããæ®å¿µãªãããã®æ¹æ³ã§ã¯å®éã®ãŠãŒã¹ã±ãŒã¹ãã·ãã¥ã¬ãŒãããŸããã ãã®çš®ã®ãšãã¥ã¬ãŒã·ã§ã³ã«ã¯ãæ©èœãã¹ããšããã§ã«ç¢ºç«ãããŠããå床åšããããŸãã
ãããžã§ã¯ãã§ã¯ã人æ°ã®ããPageObjectãã³ãã¬ãŒããç©æ¥µçã«äœ¿çšããŠããŸãã ãã®èŠçŽ ã«ã¢ã¯ã»ã¹ããããã®ã¡ãœãããæäŸãããªããžã§ã¯ããšããŠããŒãžãæäœããããšã§ã ãã¹ããã¡ãŒã¹ã ïŒPageObject-First / POFïŒã®ã¹ã¿ã€ã«ã§åŒãç¶ãäœæ¥ã§ããŸãã
ãPageObjectãã³ãã¬ãŒãã奜ãã§ãããã¹ããããã°ããã¹ãããã£ããããŠã·ã³ãã«ã§ãããããããªããŸãã Dmitry Santotskyãéçºè
ãã¹ããäœæãã段éã§ã¯ãç¹å®ã®ã»ã¬ã¯ã¿ãŒãšHTMLæ§é ã«çŠç¹ãåãããå¿ èŠã¯ãããŸããã ããããŒããã¹ãããå Žåã¯ãåã«getHeaderLabelã¡ãœãããåŒã³åºããŸãã ãã®ããã«ããŠãTDDã§ç°¡åã«äœæ¥ã§ããŸãã
ããŒãžãå®è£ ããèµ€ç·ã®ãªãã¡ã¯ã¿ãªã³ã°æ®µéã§ãç¹å®ã®ã»ã¬ã¯ã¿ãŒã瀺ããŸãã
åäœãã¹ãã«ããã®ã¢ããã¯ã¹
ãã¹ãã¯ãããçš®ã®ããžãã¯ãããæ¡ä»¶ãå«ããã®ãã¹ãŠãæå³ããŸãã ã®ã¢ããã¯ã¹ã¯ãååãšããŠã çŽç²ãªæ©èœãšããŠå®è£ ãããŸã ã ãã¹ãã«æé©ãªãã®ã¯äœã§ããïŒ mokamiãã¹ã¿ãã§åŠçããå¿ èŠã®ããå¯äœçšãäŸåé¢ä¿ã¯ãªããå ¥åããŒã¿ãšåºåããŒã¿ã®ã¿ã§ãã 眪ã¯åœŒãããã¹ãã§ã«ããŒããŸããïŒ
ããããçå£ã«ãããããç§ãã¡ãæã£ãŠããã®ã¢ããã¯ã¹ã«ãåãã«è¶³ããªãããéåžžã«éèŠãªããžãã¯ããããŸãã ç¶æ ãå€æŽããŠããŸãããã®å Žåããªããžããªã®ç¹å®ã®éšåããã§ãã¯ããå¿ èŠããããŸãã ããã«ãã®ã¢ããã¯ã¹å ã§ãããŒã¿é åãäœããã®æ¹æ³ã§åŠçããããã€ãã®æ¡ä»¶ãèšè¿°ããããšãã§ããŸãã ãããã®å Žæã§ã¯ã人ã ã¯ãã°ãã°ééããç¯ããŸãã èŠããã«ã圌ãã¯çªç¶åºãŠããŸãã ããã¯ç§ãã¡ã®ãããžã§ã¯ãã§äœåºŠãèŠãããŸããã ãã¹ããä»ããŠãªãã¥ãŒãµãŒãäœæããå Žåãå°çããã€ãã³ãã®ã©ã®ããŒã¿ãåŠçãããã®ãããªåŠçåŸã«ã¹ãã¢ãã©ã®æ°ããç¶æ ãåãå ¥ãããã«ã€ããŠå°ãªããšã2åèããŸãã
é »ç¹ã«äœ¿çšãããææ³ã®1ã€ã¯ããªããžããªã®åæç¶æ ïŒINIT_STATEïŒãšå€æŽïŒDIRTY_STATEïŒã䜿çšãããã¹ãã§ãã ã®ã¢ããã¯ã¹ãã¹ãããåæç¶æ ã§ããšãç¶æ ãå€æŽããŠãã«åå²ãå§ããã®ã¯ãéçºè ã®Dima Poluyanã§ããã 圌ã®æèŠã§ã¯ãç¶æ ãå€æŽããããã¹ãã¯æåã®ãã¹ããããããã«äŸ¿å©ã§ãã
ãŠããããã¹ãã«ããAPIãµãŒãã¹ãšã¢ã¯ã·ã§ã³
ããã§ã¯ãã®ã¢ããã¯ã¹ãšåãåçã§ãã åŒã³åºãå¿ èŠã®ãããšã³ããã€ã³ããšããã®ãã€ã³ãã®ãªã¯ãšã¹ããäœæããæ¹æ³ãæ°åæ€èšããŸãã æçµçã«ãTDDã¢ãããŒãã§ã¯ããã¹ããä»ããŠã³ãŒããèšè¿°ããå¿ èŠããããŸããã€ãŸããäºåã«äœæããããã¹ããªãã§ã¯ãµãŒãã¹ãã¬ãã¥ãŒãµãŒãå®è£ ã§ããŸããã
ããŒã¿æ€çŽ¢ã®ãã£ã«ã¿ãŒå€ã圢æããå€ãã®ãã©ã¡ãŒã¿ãŒãæž¡ãå¿ èŠããããŸãã ããã«ã¯ã©ã®HTTPåè©ãéžæããŸããïŒ éåžžã圌ãã¯ãµãŒãã¹ãšã³ããã€ã³ãã®å®è£ ãéå§ãããšãã«ããã«ã€ããŠèããŸãã ãã¹ããã¡ãŒã¹ãã®ã¢ãããŒãã§ã¯ããã¹ãã®å®è£ äžã«ããã«ã€ããŠèããå¿ èŠããããŸãã
ãã¡ãããç§ãã¡ã¯ãæ ãè ã®ããã«ããµãŒãã¹ããã¹ãã§ã«ããŒãã¹ãã ãšããçµè«ã«ããã«ã¯è³ããŸããã§ããã ããã¯ãã¹ãŠãããã€ãã®å°ããªééãããå§ãŸããŸããã äžéšã®ãšã³ããã€ã³ãã¯ç°ãªãå Žæã§åŒã³åºãããŸããããç°ãªããã£ã«ã¿ãŒãã©ã¡ãŒã¿ãŒã䜿çšããŠããŸããã ãµãŒãã¹ã¡ãœããã®å éšã«ã¯ããã©ã¡ãŒã¿ãŒã«å¿ããŠãå¿ èŠãªãã£ã«ã¿ãŒå€ã圢æãããããããªãã§èŠæ±ãéä¿¡ããããžãã¯ïŒæ¡ä»¶ïŒãæžã蟌ãŸããŸããã ãã°ããããŠãéçºè ã®1人ãããã©ã«ãã®é¢æ°ãã©ã¡ãŒã¿ãŒããã£ã«ã¿ãŒã®ãµãŒãã¹ã¡ãœããã«è¿œå ããŸããã ããã«ãããã¡ãœããããã©ã¡ãŒã¿ãŒãªãã§åŒã³åºãããå Žæãç ŽæããããŒã¿ãééã£ãæ¹æ³ã§éãããŠããŸããã
ãã®ã±ãŒã¹ã¯å§ãŸãã§ããããã¹ããéããŠAPIãµãŒãã¹ãéçºããããšãæ±ããããŸããã
æ©èœãšã¢ã¯ã·ã§ã³ã®ã»ãŒåãåæ©ã ããã«ã圌ãã®ããã«ããã¹ãã¯ã®ã¢ããã¯ã¹ã®ãã¹ããšäžç·ã«ããã«æžããããããã¯è€éã§ãããäžç·ã«è¡ããã®ããã§ãã
ãã¬ãŒãã³ã°ãã¹ã
䜿çšãäœåãªããããå¥ã®ã¿ã€ãã®ãã¹ãã¯ããã¬ãŒãã³ã°ãã¹ãã§ãã ç§ãã¡ã®ãããžã§ã¯ãã®1ã€ã§ããµãŒããŒã¯Goéçºè ã®ç¬ç«ããããŒã ã«ãã£ãŠéçºãããŸããã æ®å¿µãªããããµãŒããŒéšåã®éçºã®éå§ã¯ãã¯ã©ã€ã¢ã³ãéšåã®éå§åŸã«èšç»ãããŠããŸããã æåã¯ãæš¡æ¬ããŒã¿ã䜿çšããŠAPIãµãŒãã¹ãéçºããŸããã ããŒã¿åœ¢åŒã¯ããšã³ããã€ã³ããããæ©ãé ä¿¡ããããã£ãããšããã¥ã¡ã³ãã«ããGoéçºè ã®èª¬æã«åºã¥ããŠããŸããã ãšã³ããã€ã³ãã®åºçŸã«ããããã®èª¿æ»ïŒåœ¢åŒã®æ€èšŒãšç解ïŒããã³ãããšã®çµ±åã¯ãã¬ãŒãã³ã°ãã¹ããééããŸããã
ãã®ãããç§ãã¡ã¯ç¥èãããã¥ã¡ã³ããšåæãããç§ãã¡ã®åŽã§ã¯ãªããšã©ãŒã«å¯ŸããŠèªåèªèº«ãä¿èšŒããŸããã Go-developersã¯çµ±åãã¹ãã§ãµãŒãã¹ã®ãšã³ããã€ã³ããã«ããŒããŸããã§ããããããã¯åé¡ã§ã¯ãªãããã¬ãŒãã³ã°ãã¹ãã§è¡ããŸããã æçµçã«ãçµã¿ç«ãŠãããã¯ã©ã€ã¢ã³ãããŒããé ä¿¡ããåã§ãããã¹ãŠã®ãµãŒãã¹ãšã³ããã€ã³ããå®å®ããŠãããçµ±åã«é¢ããŠã¢ããªã±ãŒã·ã§ã³ãæåŸ ã©ããã«æ©èœãããšããPMOã¬ããŒããéä¿¡ããŸããã ãã¬ãŒãã³ã°ãã¹ããå¥åº·ãã¹ãïŒç ãã¹ããå¥å šæ§ãã§ãã¯ïŒã«å€ãã£ããšèšããŸã
->ãã¬ãŒãã³ã°ãã¹ãã®è©³çŽ°ïŒæªç¥ã®ãã®ãšã®æŠã
ç¶ç¶çãªçµ±åãšé ä¿¡
äœããã®æ¹æ³ã§èªååãããŠããããCI / CDããã»ã¹ã«é¢äžããŠããªãå Žåããªããžããªå ã®ãã¹ãã®ååšèªäœã¯åœ¹ã«ç«ã¡ãŸããã
ç§ãã¡ã®å Žåããã¹ãã¯æ倧3åå®è¡ãããŸãã
æåã®ã¹ãããã¯ãéçºè ãã³ãããããããšã§ããéçºè ã¯èªåã®ãã·ã³ããã³ãããããŸãã ãã®æäœãå®äºãããšã git pre-commitããã¯ãèªåçã«ããªã¬ãŒãããããŒã«ã«éçºãã·ã³ã§ãã¹ãŠã®ãã¹ããå®è¡ãããŸãã æåãããšãã³ãŒãã¯gitlabã«éããã ããŒãžèŠæ±ãã³ãŒããã¥ãŒã«éä¿¡ãããŸãã
ãã¹ãŠãæ£åžžã§ããã°ããã©ã³ãã¯éçºã«ããŒãžããããªã¢ãŒããã·ã³ã§2åç®ã®ãã¹ãå®è¡ãéå§ãããŸããããã¯ããããgitlabã©ã³ããŒã§ãã ããã®æ©èœã¯gitlab ciã«ãã£ãŠæäŸãããŸãã
ãããŠæåŸã®æ®µéã¯ãåã¹ããªã³ãã®çµããã«JenkinsããŒã«ã«ãã£ãŠéå§ããããªãªãŒã¹ã§ãããã¹ãå®è¡ã§ããããã¯CDããã»ã¹ã®äžéšã§ãïŒä»¥åã¯Jenkinsã§ãã«ããããé »ç¹ã«ãã¹ã±ãžã¥ãŒã«ã«åŸã£ãŠå®è¡ããŠããŸããïŒã
ã«ãã¬ããž
ç§ãã¡ã¯ãããæã£ãŠããŸãããç§ã¯ãããä¿¡ããŠããŸããã nycã¢ãžã¥ãŒã«ã䜿çšããŸãããã®ã¢ãžã¥ãŒã«ã¯ã å éšã§ã¯åãã€ã¹ã¿ã³ããŒã«ã§ãã ãªãã§ä¿¡ããããªãã®ïŒ ã«ãã¬ããžã枬å®ãããã¹ãŠã®æ©åšã¯ããã«ãã ããã§ãã 圌ãã¯åã«ãã¹ãã§é¢æ°ïŒã¯ã©ã¹/ã¡ãœããïŒãåŒã³åºããšããäºå®ããã§ãã¯ããŸããããã®ã¢ãããŒãã¯ããããèšç®æ©ã®äŸãå®å šã«ç Žå£ããŸãã
æ°åŠçãªé€ç®ã®æ©èœããã¹ãããå¿ èŠããããšããŸãã 1ã€ã®ãã¹ãã 2/2 = 1ããèšè¿°ãããšããã¹ãã«ãã¬ããžãã¹ãããŒã«ã¯èµ·ååŸã«100ïŒ ã衚瀺ããŸãã ããããããã§ããïŒ 100ïŒ ã衚瀺ãããäœæ¥ãæ£åžžã«è¡ãããããšã瀺ãææšã®1ã€ã§ãããåªããã³ãŒãã«ãã¬ããžãã¹ããæ°ããã ãã§ããã§ããïŒ
ãããã ã2/0ãã¯ã©ãã§ããïŒ ãŸãã¯ã2 / nullã ïŒ ãŸãã¯ãNaN / undefinedã ïŒ
***
ã©ããããããããã¹ãŠãã·ã³ãã«ã§æãç³ãŸããŠããŸãã ãããŠãå°é£ã¯ã©ãã«ãããŸããïŒ
ã¡ã¢ã®æåŸã§ããã®èããé ã«èœã¡çããå Žåãããã¯ç§ãã¡ãç®æšã«å°éããããšãæå³ããŸãã React.jsã¢ããªã±ãŒã·ã§ã³ãã©ã®ããã«ãã¹ãããŸããïŒ artur.basak.devingrodno@gmail.comã«æžã蟌ã¿ãŸã
åç
§è³æ
ããŒã«ïŒ
http://chaijs.com
http://sinonjs.org
https://mochajs.org
http://airbnb.io/enzyme
http://eslint.org
https://nodesecurity.io
https://www.npmjs.com/package/nsp
https://www.npmjs.com/package/nyc
https://about.gitlab.com/features/gitlab-ci-cd
https://jenkins.io
åå¿ãã¹ãïŒ
https://facebook.github.io/react/docs/test-utils.html
https://github.com/reactjs/redux/blob/master/docs/recipes/WritingTests.md
https://facebook.github.io/react/blog/2014/09/24/testing-flux-applications.html
å¥ã®äžçïŒ
https://facebook.github.io/jest
https://facebook.github.io/jest/docs/snapshot-testing.html
https://github.com/storybooks/storybook/tree/master/addons/storyshots
http://chaijs.com
http://sinonjs.org
https://mochajs.org
http://airbnb.io/enzyme
http://eslint.org
https://nodesecurity.io
https://www.npmjs.com/package/nsp
https://www.npmjs.com/package/nyc
https://about.gitlab.com/features/gitlab-ci-cd
https://jenkins.io
åå¿ãã¹ãïŒ
https://facebook.github.io/react/docs/test-utils.html
https://github.com/reactjs/redux/blob/master/docs/recipes/WritingTests.md
https://facebook.github.io/react/blog/2014/09/24/testing-flux-applications.html
å¥ã®äžçïŒ
https://facebook.github.io/jest
https://facebook.github.io/jest/docs/snapshot-testing.html
https://github.com/storybooks/storybook/tree/master/addons/storyshots