15 рдЖрд╕рд╛рди рдЪрд░рдгреЛрдВ рдореЗрдВ рдореЛрдЪрд╛ рд╕реЗ рдЬреЗрд╕реНрдЯ рддрдХ рдХреИрд╕реЗ рдЬрд╛рдПрдВ - рдФрд░ рдХреНрдпреЛрдВ


рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рдЬреЗрд╕реНрдЯ рдЯреЗрд╕реНрдЯрд┐рдВрдЧ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рджреЗрдЦрд╛, рдЬрд┐рд╕рдореЗрдВ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрд╡рд╛рджрд┐рд╖реНрдЯ рдЪрд┐рдкреНрд╕ рдХреА рдПрдХ рдмрдбрд╝реА рдорд╛рддреНрд░рд╛ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдПрдХ рдмрд╣реБ-рдереНрд░реЗрдбреЗрдб рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрди рд╣реИред рдмрд╢рд░реНрддреЗ рдХрд┐ рдореЗрд░реЗ рдкрд╛рд╕ 5000 рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдереА, рдкреНрд░рд╡рд╛рд╕ рдиреЗ рдЕрддреНрдпрдВрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХрд╛ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ред рдЕрдЧрд▓рд╛, рдореИрдВ 14 рд╕рд░рд▓ рдЪрд░рдгреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдирдХреЗ рд▓рд┐рдП рдореИрдВ рдкреНрд░рд╡рд╛рд╕ рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ - рдХреБрдЫ рдЖрд░рдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде - рдФрд░ рдЗрд╕рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреНрдпрд╛ рдорд┐рд▓рд╛ред Spoiler - рд╕рдм рдХреБрдЫ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд┐рдХрд▓рд╛ред


рдмреЗрд╕рд▓рд╛рдЗрди


тАФ , , . тАФ тАФ . , , 5000 тАФ .


mocha, chai, sinon, rewire, nock, nyc тАФ , . , :


1) sandbox, , sinon.sandbox.
2) - тАФ . , .
3) sinon.useFakeTimers. . .
4) 13 . , , 13 .



, Jest , . puppeteer , ( ) тАФ тАФ , . тАФ . , тАФ , .



- mocha тАФ , , . , mocha-parallel-tests , . тАФ , , . , .


jest-codemods тАФ , , тАФ sinon тАФ 5000 . .


!


1.


awesome-jest, jest-runner-mocha. " !" тАФ , , .


.


npm install --save-dev jest jest-runner-mocha

jest-test.config.js


module.exports = {
    runner: 'jest-runner-mocha',
    testRegex: 'tests/.*test_.*\\.js$',
    maxWorkers: 3
};


node --use_strict ./node_modules/.bin/jest --no-cache --config jest-test.config.js

, , .
, тАФ jest. тАФ .
тАФ тАФ 90% , ! , тАФ , .


2.


, , . , , тАФ , . , , . jest-dot-reporter тАФ progress bar , тАФ .


CLI config:


    reporters: ['jest-dot-reporter'],

, awesome-jest - . тАФ .


3. mocha


тАФ , . jest-runner-mocha. , mocha 3.5. тАФ 7. , Node 4. ,


  • Node 4 mocha jest, yarn,
  • Node 8 End Of Life
  • ,
  • mocha peerDependency,

. . . peerDependency тАФ , .


4. clearMocks


, . тАФ тАФ . тАФ , тАФ , .


, , clearMocks . , тАФ , . jasmine2. тАФ .


тАФ setupFilesAfterEnv, тАФ clearMocks тАФ . , . , clearMocks jest тАФ sinon, jest .


:


    setupFilesAfterEnv: [ 'lib/clearMocks.js'],
    clearMocks: true,

lib/clearMocks.js


// const jest = require('jest-mock');
const sinon = require('sinon');

module.exports = {
    clearMocks: () => {
        // jest.clearAllMocks(); ,     ,  
        sinon.sandbox.restore();
    }
};

.
. , тАФ .


5.


, - . , , ( ). . , . тАФ ! , ? , !


6.


, process 500 exit. - .


process.on('exit', () => process.exit());

, , тАж , , тАж slowpoke.jpg.


7.


, , , process unCaughtException. , , тАФ 7.0.0 7.0.1.


8.


, тАФ , . jest-runner-mocha, jest . , тАФ тАФ . тАФ , , yarn.


9.


, postinstall hook jest-runner-mocha:


> core-js@3.6.4 postinstall 
> node -e "try{require('./postinstall')}catch(e){}"

Thank you for using core-js ( https://github.com/zloirock/core-js ) for polyfilling JavaScript standard library!

The project needs your help! Please consider supporting of core-js on Open Collective or Patreon: 
> https://opencollective.com/core-js 
> https://www.patreon.com/zloirock 

Also, the author of core-js ( https://github.com/zloirock ) is looking for a good job -)

, , . . тАФ c 23,528,407 , тАФ , , , . , 57 , . . . 12 . , . . . . , , .


тАФ .


10.


, тАФ . CI , , , . - esprint тАФ , .


jest-runner-eslint тАФ , , . , . , тАФ .


, , тАФ . Jest , grunt gulp. , , , . Jest , ...


11. CI


CI , - . , , , . тАФ !


12.


- , . - , тАж , yarn, yarn.lock. . .


. yarn тАФ yarn . . ? , тАФ .


? , yarn package-lock.json, npm-shrinkwrap.json ( ). тАФ , shrinkwrap тАФ , shrinkwrap. , , . , , . npm prune --production.


, . , , . , . - . , . ?


13.


, тАФ . , . , jest , . , .


14.


, , , тАФ , . , .


15.


. , . !



?


  1. CI 3 3 . , , .
  2. . тАФ . , .
  3. jest , .

ToDo


:


  1. , . , . , mocha , .
  2. jest тАФ . тАФ , .
  3. , jest-codemods , тАФ , .

рд╣рд╛рдВ, рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдпрд╣рд╛рдВ рдореЗрд░рд╛ рдХрд╛рдВрдЯрд╛ рдзрд╛рд╡рдХ рдореЛрдЪрд╛ рдХрд╛ рд▓рд┐рдВрдХ рд╣реИ ред
рдЖрдк рдЗрд╕реЗ рдХрдорд╛рдВрдб рдореЗрдВ рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ


npm install --save-dev @kernel-panic/jest-runner-mocha

рдФрд░ config рд░рдЬрд┐рд╕реНрдЯрд░ рдореЗрдВ рдХреИрд╕реЗ


runner: '@kernel-panic/jest-runner-mocha',

Source: https://habr.com/ru/post/undefined/


All Articles