ð Jest 19: æ²¡å ¥åãŠã©ããã¢ãŒããšãã¹ããã©ãããã©ãŒã ã®æ¹å
ãã®ããŒãžã¯ PageTurner AI ã§ç¿»èš³ãããŸããïŒããŒã¿çïŒããããžã§ã¯ãå ¬åŒã®æ¿èªã¯ãããŸããã ãšã©ãŒãèŠã€ããŸãããïŒ åé¡ãå ±å â
æ¬æ¥ãJestãã¹ããã©ãããã©ãŒã ã®ããŒãžã§ã³19ããªãªãŒã¹ããŸãããããŸã§ã§æå€§ã®JestãªãªãŒã¹ã§ãããéå»2ãæã«ããã£ãŠæ§ç¯ããŠãããã®ããèŠãã§ããããšã倧å€å¬ããæããŸãïŒ
æ²¡å ¥åãŠã©ããã¢ãŒãâ
ãŠã©ããã¢ãŒããå®å šã«æžãçŽãã峿æ§ãšæ¡åŒµæ§ãé«ããŸããããã®çµæããŸãã«æ²¡å ¥åãšåŒã¹ãäœéšãå®çŸããŸããïŒãã¡ã€ã«å€æŽåŸã«ãã¹ããå³åº§ã«åå®è¡ãããé©åãªãã¹ããç°¡åã«éžæã§ããããã«ãªããŸããã
ã¹ãããã·ã§ããã®æŽæ°â
ã¹ãããã·ã§ãã圢åŒã«ããã€ãã®å€æŽãå ããŸããããã®ãããªå€æŽã¯é »ç¹ã«è¡ãããå®éã«ã¹ãããã·ã§ããã®åäœãæ¹åãããå Žåã«ã®ã¿æ€èšããŸããã¹ãããã·ã§ããã®ããŒãžã§ã³çªå·å°å ¥ã«å ãããã°ããåããèç©ããŠãããã©ãŒãããæ¹åããŸãšããŠå®è£ ããŸããïŒ
-
ãããã¬ãã«ã®
testãitåŒã³åºãã«ããã¹ãããã·ã§ããåã®ãtestããã¬ãã£ãã¯ã¹ãåé€ -
ReactèŠçŽ ã®åºåãæ¹åããèŠçŽ ã®æåŸã®ããããã£å€æŽæã®å·®åãæå°å
-
æåãšã¹ã±ãŒãæ©æ§ã匷åãä¿¡é Œæ§åäž
倿ŽåïŒ
exports[`test snap 1`] = `
<header>
<h1>
Jest \"19\"
</h1>
<Subtitle
name="Painless JavaScript Testing" />
</header>
`;
倿ŽåŸïŒãtestããã¬ãã£ãã¯ã¹ãªããJSXã¬ã³ããªã³ã°æ¹åãããŒãžã§ã³ããããŒïŒïŒ
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`snap 1`] = `
<header>
<h1>
Jest "19"
</h1>
<Subtitle
name="Painless JavaScript Testing"
/>
</header>
`;
ãã¹ãŠã®éçºè ãäºææ§ã®ããJestããŒãžã§ã³ã䜿çšã§ãããããããŒãžã§ã³ç®¡çãããã¹ãããã·ã§ãããå°å ¥ããé©åãªã¿ã€ãã³ã°ãšå€æããŸãããã¹ãããã·ã§ããæŽæ°ãå¿ èŠãªå Žåã®èŠåã¯æ¬¡ã®ããã«ãªããŸãïŒ

ç§»è¡ãã¹ã ãŒãºã«è¡ãã倱æãããã¹ãããã®äžèŠãªå€æŽãæ°ããã¹ãããã·ã§ããã«å«ãŸããªããããæŽæ°åã«ã¯å¿ ãããŒã«ã«ã®å€æŽãå ã«æ»ããŠãã ããã
ã¹ãããã ã¹ãã®åºåæ¹åâ
詳现ã¢ãŒããåäžã¹ã€ãŒããã¹ãæãã¹ãããããããã¹ãã¯åå¥ã«è¡šç€ºãã1è¡ã«éçŽãããŸããããã«ããéèŠãªãã¹ãã«éäžã§ããã»ãã衚瀺ã¹ããŒã¹ãå€§å¹ ã«åæžãããŸãïŒ

æ°CLIåŒæ°â
Jest 19ã§ã¯CLIããå®è¡å¯èœãª2ã€ã®æ°ããã«ãã¬ããžé¢é£åŒæ°ã远å ïŒ
-
--collectCoverageFrom -
--coverageDirectory
ç¡å¹ãªCLIåŒæ°ã¯ç¡èŠãããšã©ãŒãçºçããããã倿ŽããŸãããã芪åãªãšã©ãŒã¡ãã»ãŒãžã§ãµããŒãããŸãïŒäŸïŒjest --watcå®è¡æïŒïŒ

expectã®æ¹åâ
expect npmããã±ãŒãžãšã®ã»ãŒå®å
šãªæ©èœäºææ§ãéæããŸãããããã±ãŒãžäœè
ã®Michael JacksonãJestãããžã§ã¯ããžã®å¯ä»ã«åæãããããjest-matchersã¯expectã«åç§°å€æŽãããŸããåœæ¹ã®expectã¯å®å
šäºæãæå³ããŠããªããããChristopher Chedeauãã·ãŒã ã¬ã¹ãªç§»è¡ã®ããã®ã³ãŒãã¢ãããéçºäžã§ããChristopherã¯ãŸããjest-matchersã®Jestå€ã§ã®å©çšãå¯èœã«ããæ¹è¯ã宿œãããã©ãŠã¶å
ã§ã®åäœãå®çŸããŸããã
eslint-plugin-jest â å ¬åŒESLintãã©ã°ã€ã³ã®ç»å Žâ
Jonathan Kimæ°ã®è²¢ç®ã«ãããJestãã€ãã«å ¬åŒESLintãã©ã°ã€ã³ãæäŸã§ããããã«ãªããŸããããã®ãã©ã°ã€ã³ã¯ä»¥äžã®3ã€ã®ã«ãŒã«ãå®è£ ããŠããŸãïŒ
-
no-disabled-tests - ç¡å¹åããããã¹ãã®èª€ã£ãã³ãããã鲿¢
-
no-focused-tests - ãã¹ãã¹ã€ãŒãå ã®ä»ãã¹ããç¡å¹åããfocusedãã¹ãã®ã³ããã鲿¢
-
no-identical-title - éè€ãããã¹ãã¿ã€ãã«ã®çŠæ¢
npm install --save-dev eslint-plugin-jest ãŸã㯠yarn add --dev eslint eslint-plugin-jest ã§ã€ã³ã¹ããŒã«å¯èœã§ããESLintèšå®ã« {"plugins": ["jest"]} ã远å ããããšã§æå¹åã§ããŸãã
æ°ããã±ãŒãžå ¬é: jest-validateâ
Jestèšå®ã®æ€èšŒã»æ£èŠåã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããéçšã§ãæ°ãããšã©ãŒã¡ãã»ãŒãžã³ã°ã®ä»çµã¿ãéåžžã«æçšã ã£ããããç¬ç«ããã¢ãžã¥ãŒã«ãšããŠæœåºããŸãããJest 19ã§ã¯æ°ãã« jest-validate ãå
¬åŒããã±ãŒãžãã¡ããªãŒã«å ãããŸãã
jest-validate ã¯JavaScriptããŒã«åãã®æ±çšèšå®æ€èšŒããŒã«ã§ãèŠåã»ãšã©ãŒã»éæšå¥šã¡ãã»ãŒãžã管çããŸãããŠãŒã¶ãŒãã¬ã³ããªãŒãªèšå®äŸã®è¡šç€ºæ©èœããã·ã³ãã«ãã€åŒ· åãªAPIãåããŠããŸããçããã®ãããžã§ã¯ãã«ã圹ç«ã€ã¯ãã§ãïŒ

jest-validate 㯠prettier ã®èšå®ãªãã·ã§ã³æ€èšŒã« v0.12 ããæ¡çšãããŠããŸãããã²ãããžã§ã¯ãã«è¿œå ããŠè©ŠããŠã¿ãŠãã ããããã£ãŒãããã¯ãGitHubã§ã®ãã«ãªã¯ãšã¹ãããåŸ
ã¡ããŠããŸãã
é察称ãããã£ãŒã®åŒ·åâ
é察称ãããã£ãŒã®å®è£
ãJasmineããJestæ¬äœãžç§»è¡ãããŠãŒã¶ãŒãšã¯ã¹ããªãšã³ã¹ã倧å¹
ã«æ¹åããŸãããããã«ãããããã£ãŒã®æŽåœ¢è¡šç€ºãæé©åãããæ°ãã« expect.stringContaining() ãããã£ãŒã远å ãããŸãããããã« expect.toMatchObject() ãšã®é£æºã匷åãããäž¡æ©èœãçµã¿åãããŠæŽ»çšã§ããããã«ãªããŸããïŒ

æåã¢ãã¯ã®æ©èœåŒ·åâ
ãã¹ããããã©ã«ããŒæ§é ã§ã®æåã¢ãã¯ãæ£åŒã«ãµããŒããããŸãããäŸ: __mocks__/react-native/Libraries/Text/Text.js ãæåŸ
éãã«åäœããŸããä»®æ³ã¢ãã¯ãšæšç§»çäŸåé¢ä¿ã®åé¡ãä¿®æ£ããè€æ°ãã¿ãŒã³ãåäžãã¡ã€ã«ã«ãããã³ã°ãããå Žåã® moduleNameMapper ã®åäœãæ¹åãããŸããã
ç Žå£ç倿Žâ
å
¬åŒãµããŒãå€ã ã£ã mocksPattern èšå®ãªãã·ã§ã³ãåé€ããŸããããŸã testPathDirs ãªãã·ã§ã³ã¯æ©èœãããæç¢ºã«è¡šçŸãããã roots ã«åç§°å€æŽãroots ã®ããã©ã«ãå€ã¯ ["<rootDir>"] ã§ãä»»æã®æ°ã®ãã£ã¬ã¯ããªãæå®å¯èœã§ããrootDir ãªãã·ã§ã³ã¯åŸæ¥éãä»ã®èšå®ã®ãã¬ãŒã¹ãã«ããŒãšããŠæ©èœãããã®å€æŽã«ããèšå®ãããçŽæçã«ãªããŸãã
ããã¥ã¡ã³ãã®å·æ°â
Hector Ramos æ°ãš Kevin Lacker æ°ã«ããJestããã¥ã¡ã³ãã®å·æ°ãå®äºããŸããããµã€ãæ§æã倿Žããããã¥ã¡ã³ããšAPIãç¬ç«ããããŒãžãšããŠæäŸã ãããã«ãªããŸããïŒ
-
ããã¥ã¡ã³ãã§ã¯ãJestã®å°å ¥ã¬ã€ããçšæãããŠããŸããGetting Startedãéåæã³ãŒãã®ãã¹ãã«å ãã䟿å©ãªã¬ã€ããšããŠã¹ãããã·ã§ãããã¹ããReact Nativeã¢ããªã®ãã¹ããwebpackãšã®é£æºãJestãžã®ç§»è¡ãªã©ãæ²èŒãããŠããŸãïŒ
-
äžæ¹APIã»ã¯ã·ã§ã³ã§ã¯ãJestãæäŸããå šã¡ãœãããç¶²çŸ ããŠããŸãïŒ
expectãªããžã§ã¯ããjestãªããžã§ã¯ããã¢ãã¯é¢æ°ãã°ããŒãã«å€æ°ã«å ãã_package.json_ãCLIããã®èšå®ãªãã·ã§ã³ã確èªã§ããŸãã
ããŒã ããŒãžã¯ããŒãèšå®ã®ãã¹ããã©ãããã©ãŒã ããšããJestã®ç¹åŸŽãããæç¢ºã«äŒããããã«å šé¢çã«ãªãã¶ã€ã³ãããŸãããã¢ãã€ã«ããã€ã¹ã§ã®èªã¿ããããåäžããŠããŸããRSSãŠãŒã¶ãŒã®çæ§ã«ã¯ãåŸ æã®ããã°ãã£ãŒããæäŸéå§ããŸããã
ã³ãã¥ããã£ã¢ããããŒãâ
-
Vas Boroviakæ°ã«ãããJestå ¥éãè¬æŒã¯æ¬åœã«çŽ æŽãããå 容ã§ã ãã
-
Twitterã®@jestjs_ããã©ããŒããŸãããã
-
Jestã³ã¢ããŒã ã¯é±1åã®å®äŸããŒãã£ã³ã°ã§çŸåšã®èª²é¡ãå°æ¥èšç»ã話ãåã£ãŠããŸããJestãžã®è²¢ç®ã«èå³ãããã°ããã«ãªã¯ãšã¹ããéã£ãäžã§é±æ¬¡ããŒãã£ã³ã°ãžãã²ãåå ãã ããã
-
Artsyã®åªç§ãªãšã³ãžãã¢é£ã2017幎ããã³ããšã³ãã¹ã¿ãã¯ã®äžç°ãšããŠJestã玹ä»ããŠããŸãã
-
Stephen Scottæ°ã¯Reactã³ã³ããŒãã³ãã®ãã¹ãææ³ã«ã€ããŠè©³çްãªèšäºãå·çããåã¢ãããŒãã®é·æçæãæ¯èŒããŠããŸãã
-
Cristian Carlessoæ°ã®ããã°èšäºã§Vue.jsãšJestã®é£æºæ¹æ³ãå€§å¹ ã«ç°¡çŽ åãããŸããã
-
Michele Bertoliæ°ã®Reactãã¶ã€ã³ãã¿ãŒã³ãšãã¹ããã©ã¯ãã£ã¹ã«é¢ããæžç±ã§ã¯ãJestã«é¢ããç« ããŸãããšèšããããŠããŸãã
-
OSéç¥ã衚瀺ãã
--notifyã³ãã³ãã匷åãããéç¥ããçŽæ¥ãã¹ããåå®è¡ã§ããããã«ãªããŸãããå®ã¯ãããJestã®æ°æ©èœã§ãïŒãã®ããã°èšäºãæåŸãŸã§èªãã§ãããã©ããã®ç¢ºèªãã¹ããå ŒããŠããŸãïŒã -
Jest ãreact-boilerplateã«æ£åŒæ¡çšãããŸããã
-
Jestãããã£ãŒã®é ããæ©èœã«ã€ããŠã®èšäºãå ¬éãããŠããŸãã
æåŸã«å¬ãããç¥ãããšããŠãavaãã¹ãã©ã³ããŒãJestãã©ãããã©ãŒã ã®äžéšãæ¡çšããåºæ¬çãªã¹ãããã·ã§ãããµããŒããšpretty-formatãå®è£ ããŸããããã¹ãã€ã³ãã©ã®çµ±åã«ããã¢ããªã±ãŒã·ã§ã³ãã¹ãã®åŠç¿ã³ã¹ããäœäžãããã¹ããã©ã¯ãã£ã¹ã®å ±æãä¿é²ãããŸããæ¢åãã¹ãã©ã€ãã©ãªããä»åŸãåŠã¹ãããšã楜ãã¿ã«ããŠããŸãã
å®å šãªå€æŽå±¥æŽã¯GitHubã§ã芧ããã ããŸããJest 19ã¯17åã®çæ§ãè²¢ç®ããçã®JavaScriptã³ãã¥ããã£ã®ååã®ææã§ãããããžã§ã¯ããããè¯ãããããã«ãååããã ããçæ§äžäººã²ãšãã«æè¬ããŸãã
ãã®ããã°èšäºã¯ Rogelio Guzman ãš MichaÅ PierzchaÅa ãå·çããŸããã
