<p>рдореЛрдЪрд╛ 4 рдореЛрдЪрд╛ 3 рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ</p>

рдХреЛ рдирд┐рд░реНрдорд┐рдд 3 рдЕрдХреНрддреВре░ 2017  ┬╖  61рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mochajs/mocha

рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ

  • [x] рдЬрд╛рдБрдЪ рдХреА рдЧрдИ рдХрд┐ common mistake рд▓реЗрдмрд▓ рдХреЗ рд╕рд╛рде рдХреНрд░реЙрд╕ рд░реЗрдлрд╝рд░реЗрдВрд╕рд┐рдВрдЧ
  • [x] рдореЛрдЪрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╣реА рд╡рд╛рддрд╛рд╡рд░рдг рдФрд░ / рдпрд╛ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдпрд▓рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдЧрд▓реА-рдЬреАрди рдИрдПрд╕ рдореБрджреНрджреЛрдВ рдФрд░ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рдЬрд╛рдВрдЪ рдХреА рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдирд╣реАрдВ рд╣реИ рдЬреЛ рдкреНрд░рд╢реНрди рдореЗрдВ рдкрд░реНрдпрд╛рд╡рд░рдг рдпрд╛ рдЖрдкрдХреЗ рдХреЛрдб рдореЗрдВ рдмрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред ред
  • [x] 'рд╕реНрдореЛрдХ рдЯреЗрд╕реНрдЯ' рдХреЛрдб рдХреЛ рдЕрд╕рд▓реА рдЯреЗрд╕реНрдЯ рд╕реВрдЯ рдХреЗ рдмрд╛рд╣рд░ рдЪрд▓рд╛рдХрд░ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреЗ рддрд╣рдд рдХреЛрдб рдореЗрдВ рд╕рдорд╕реНрдпрд╛ рд╣реИ, рдореЛрдЪрд╛ рдпрд╛ рдореЛрдЪрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧред
  • [x] рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд┐рдпрд╛ рдХрд┐ рдореЛрдЪрд╛ рдХреЗ рд╕реНрдерд╛рдиреАрдп рдФрд░ рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╕рдВрдЧрддрд┐ рдирд╣реАрдВ рд╣реИред рдЖрдк рдЙрдиреНрд╣реЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
    node node_modules/.bin/mocha --version (рд╕реНрдерд╛рдиреАрдп) рдФрд░ mocha --version (рд╡реИрд╢реНрд╡рд┐рдХ)ред рд╣рдо рд╡рд┐рд╢реНрд╡ рд╕реНрддрд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рдореЛрдЪрд╛ рдХреЗ рдЙрдкрдпреЛрдЧ рд╕реЗ рдмрдЪрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВред

рд╡рд┐рд╡рд░рдг

рдореИрдВ рдЕрдм рдХреБрдЫ рд╡рд░реНрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕реЗрдЯ рдЪрд▓рд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╣рдореЗрд╢рд╛ рдирд╡реАрдирддрдо рдореЛрдЪрд╛ рдореЗрдВ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддрд╛ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рд╕рдм рдХреБрдЫ рдареАрдХ рдерд╛ред
рдореЛрдЪрд╛ 4 рдХреЗ рд╕рд╛рде рдЕрдЪрд╛рдирдХ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкрд╛рд╕ рд╣реЛ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдорд╛рдкреНрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ -рдХреЛрдИ-рдирд┐рдХрд╛рд╕ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВрдиреЗ рдЗрд╕реЗ рдХрднреА рдирд╣реАрдВ рдЬреЛрдбрд╝рд╛ред

рдкреНрд░рдЬрдирди рдХрд░рдиреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛

рдЕрдкреЗрдХреНрд╖рд┐рддреН рд╡реНрдпрд╡рд╣рд╛рд░:
рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд░реЛрдХрдирд╛ рдЪрд╛рд╣рд┐рдП рднрд▓реЗ рд╣реА рдЯрд╛рдЗрдордЖрдЙрдЯ рдпрд╛ рд╕реЙрдХреЗрдЯ рд╣реЛрдВ рдЬреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдореМрдЬреВрджрд╛ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░:
рдореЛрдЪрд╛ 4 рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ 3 рдХреА рддрд░рд╣ рдЗрдВрддрдЬрд╛рд░ рдХрд░рддреА рд╣реИ -рдиреЛ-рдПрдЧреНрдЬрд┐рдЯ рдлреНрд▓реИрдЧ рдХреЗ рд╕рд╛рде

рдХрд┐рддрдиреА рдмрд╛рд░ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд░рддрд╛ рд╣реИ:
рд╣рдореЗрд╢рд╛ рд╣рдорд╛рд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рдеред рдореЗрд░реЗ рдкрд╛рд╕ 700 рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЗрдВрдЧрд┐рдд рдХрд░рдирд╛ рдХрдард┐рди рд╣реИ рдХрд┐ рдХреМрди рд╕реЗ рдореБрджреНрджреЗ рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпрджрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рдХреЛрдбрдмреЗрд╕ рдореЗрдВ рд╣реИред

рд╕рдВрд╕реНрдХрд░рдгреЛрдВ

рдореЛрдЪрд╛ 4.0.0 рд╡рд┐рдлрд▓ред рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╕рдм рдХреБрдЫ рдЕрдЪреНрдЫрд╛ рд╣реЛред

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЙрдкрдпреЛрдЧ --exit ), рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╖рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВ рдЕрдм рдЦреБрдж рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдиреЗрддреНрд░рд╣реАрди рдЙрдиреНрдирдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

рд╕рднреА 61 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдореИрдВ рдареАрдХ рд╡реИрд╕реА рд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВред рдЯреЗрд╕реНрдЯ рдкрд╛рд╕ рд╣реЛрдВрдЧреЗ рдФрд░ рдлрд┐рд░ рдореЛрдЪрд╛ рдмрд╕ рд▓рдЯрдХ рдЬрд╛рдПрдЧрд╛ред рдореЗрд░рд╛ рдЯреНрд░реИрд╡рд┐рд╕ CI рджреЗрдЦреЗрдВ:
https://travis-ci.org/mkrufky/node-dvbtee/builds/282593109

рдореИрдВрдиреЗ рд╡реАрдбрд┐рдпреЛ-рджреЗрд╡ / hls.js рдкрд░ рднреА рдпрд╣реА рд╕рдорд╕реНрдпрд╛ рджреЗрдЦреА - рдореЛрдЪрд╛ рдХреЗрд╡рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рд▓рдЯрдХрд╛ рджреЗрддрд╛ рд╣реИ:
https://travis-ci.org/video-dev/hls.js/builds/282590422

рдХреНрдпрд╛ рдЖрдк рд▓реЛрдЧреЛрдВ рдиреЗ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдкрдврд╝реЗ? https://boneskull.com/mocha-v4-nears-release/#mochawontforceexit

рдзрдиреНрдпрд╡рд╛рджред рдЯреЛ рдЦрд╝рд░рд╛рдм рдореЛрдЪрд╛ рд╡реЗрдмрд╕рд╛рдЗрдЯ рдЗрд╕ рдмреНрд░реЗрдХрд┐рдВрдЧ рдмрджрд▓рд╛рд╡ рд╕реЗ рдЕрдкрдбреЗрдЯ рдирд╣реАрдВ рд╣реИред рд╡рд╣рд╛рдВ рдореМрдЬреВрдж рдХреБрд▓рд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рд╣реИред

рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЙрдкрдпреЛрдЧ --exit ), рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╖рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВ рдЕрдм рдЦреБрдж рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдиреЗрддреНрд░рд╣реАрди рдЙрдиреНрдирдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

рдЬрд╛рд░реА рдиреЛрдЯреЛрдВ рдореЗрдВ https://github.com/mafintosh/why-is-node-running/issues/7 рдХреЗ рдХрд╛рд░рдг рдХрд╛рдо рдирд╣реАрдВ рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ why-is-node-running рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рд╕реБрдЭрд╛рд╡ рд╣реИред

рдЗрд╕рд╕реЗ рднреА рдорд╛рд░рд╛ред рдореИрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкреАрдЫреЗ рдХреЗ why-is-node-running рдХреЛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреВрдЯ рдЬрд╛рддрд╛ рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рдкрд░рд┐рд╡рд░реНрддрди рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдирдорд╕реНрддреЗ,

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЗрд╕ рдмрд┐рдВрджреБ рдкрд░ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдЕрдкрдЧреНрд░реЗрдб рдкрде рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ - рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╕рд╣рдордд рд╣реИрдВ рдХрд┐ рдореЛрдЪрд╛ рдХреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдХреНрдпрд╛ рдЪрд▓ рд░рд╣рд╛ рд╣реИ (рдФрд░ рдлрд┐рд░ рдЙрд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрдЧреА; рдпрд╣ рд╕рд┐рд░реНрдл рд╣реЛ рд╕рдХрддрд╛ рд╣реИ; рдРрд╕рд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡рд┐рдлрд▓рддрд╛ рд▓реМрдЯрдиреЗ рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди рдЕрднреА рддрдХ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдВрддреЛрд╖рдЬрдирдХ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдорд┐рд▓рд╛ рд╣реИред рд╕рдВрд╕реНрдХрд░рдг 4 рдХреЛ рдЙрд╕ рд╕рдордп рдХреА рд░рд╛рд╢рд┐ рдирд╣реАрдВ рдорд┐рд▓реА рдЬреЛ рд╣рдо рдЗрд╕рдореЗрдВ рдбрд╛рд▓рдирд╛ рдЪрд╛рд╣рддреЗ рдереЗ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рд╣рдорд╛рд░реЗ CI рджреНрд╡рд╛рд░рд╛ рдлреИрдВрдЯрдордЬрд╕ 1.x рдХреЗ рдЗрдВрд╕реНрдЯреЙрд▓рд░ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХреЗ рдХрд╛рд░рдг рд╡рд┐рдлрд▓ рд╣реЛрдиреЗ рдХреЗ рд╕рдВрдХреЗрдд рджрд┐рдП рдЧрдП рдереЗред рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕реЗрдЯ рдЕрдк рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рдЕрднреА рднреА рдЗрд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ )ред why-is-node-running рдПрдХ рдРрд╕рд╛ рдЙрдкрдХрд░рдг рдерд╛ рдЬрд┐рд╕реЗ рд╣рдордиреЗ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдПрдХреАрдХреГрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ( --expose-internals рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреЗ рдмреАрдЪ рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдЗрд╕рдХреЗ рдЖрдЙрдЯрдкреБрдЯ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдЪреНрдЫреЗ рддрд░реАрдХреЗ рдХреА рдХрдореА); рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдпрджрд┐ рдЖрдк рдПрдХ рджреЛ рдЪрд░рдгреЛрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ:

  • --expose-internals ( node --expose-internals node_modules/mocha/bin/_mocha ) рдХреЗ рд╕рд╛рде рдореЛрдЪрд╛ рдЪрд▓рд╛рдПрдВ
  • рдЕрдкрдиреА рдкрд╣рд▓реА рдкрд░реАрдХреНрд╖рд╛ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдПрдВ (рдЬреИрд╕реЗ mocha.opts рдореЗрдВ рд╕реВрдЪреАрдмрджреНрдз) (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рд╢реБрд░реБрдЖрдд рдХреЗ рд╕рд╛рде) after(require('why-is-node-running'))

... рддреЛ рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореИрдВ рджреЗрдЦреВрдВрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдореИрдВ рдЗрд╕реЗ рдФрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреНрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ), рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдХреЛрдИ рдмреЗрд╣рддрд░ рд╡рд┐рдХрд▓реНрдк рдЬрд╛рдирддрд╛ рд╣реИ рддреЛ рдХреГрдкрдпрд╛ рд╣рдореЗрдВ рдмрддрд╛рдПрдВ!

рд╕рд╛рдЗрдЯ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдЧреБрдо рд╣реЛрдиреЗ рдкрд░ рднреА рдЦреЗрдж рд╣реИ - рд╣рдо рдЗрд╕реЗ рдЬрд▓реНрдж рд╕реЗ рдЬрд▓реНрдж рдЕрдкрдбреЗрдЯ рдХрд░ рджреЗрдВрдЧреЗред (рдПрдХ рдмрд╛рд░ # 2987 рд╣реЛ рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рд╣рдо рдЗрд╕реЗ рдЕрдкрдиреЗ рд╕рдВрд╕реНрдХрд░рдг / рдкреНрд░рдХрд╛рд╢рди рд╕реНрдХреНрд░рд┐рдкреНрдЯрд┐рдВрдЧ рдХрд╛ рдПрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣рд┐рд╕реНрд╕рд╛ рднреА рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ!)

@ScottFreeCode

borisov<strong i="7">@glossy</strong>:~/test/mocha $ node --version
v6.11.3

borisov<strong i="8">@glossy</strong>:~/test/mocha $ ./node_modules/.bin/mocha --version
4.0.0

borisov<strong i="9">@glossy</strong>:~/test/mocha $ ./node_modules/.bin/mocha --expose-internals test.spec.js 
  error: unknown option `--expose-internals'

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ:

рдпрд╣ рдХрд╛рдо:

node --expose-internals ./node_modules/.bin/mocha test.spec.js

рдареАрдХ рд╣реИ, рдЦреЗрдж рд╣реИ рдХрд┐ рдореИрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рдерд╛ - --expose-internals рдПрдХ рдиреЛрдб рд╡рд┐рдХрд▓реНрдк рд╣реИ рдХрд┐ рдЪрд▓рд╛рдХрд░ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ node --expose-internals ./node_modules/mocha/bin/_mocha рдХреЗ рдмрдЬрд╛рдп ./node_modules/.bin/mocha ред рдпрд╣ рднреА рдХреБрдЫ рд╣рдо рддрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдореЛрдЪрд╛ рдиреЛрдб рдкрд░ рдХреБрдЫ рдЭрдВрдбреЗ рдЧреБрдЬрд░рддрд╛ рд╣реИ рдФрд░ рд╣рдо рдЙрди рдЭрдВрдбреЗ рдореЗрдВ --expose-internals рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред

рдХреНрд░рдорд╢рдГ рдкреНрд░рд▓реЗрдЦрди рдФрд░ рдореЛрдЪрд╛ рдХреЗ рдиреЛрдб рдЭрдВрдбреЗ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП mochajs / mochajs.github.io # 81 рдФрд░ # 3045 рдмрдирд╛рдпрд╛ рдЧрдпрд╛ред рдкреНрд░рд▓реЗрдЦрди рдЕрджреНрдпрддрди рд╣реЛрдиреЗ рддрдХ рдХрдо рд╕реЗ рдХрдо рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдЦреБрд▓рд╛ рд░рдЦреЗрдВрдЧреЗред

@ScottFreeCode рдЖрдк рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ --expose-internals рдХреЗрд╡рд▓ рдиреЛрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ <= 6. рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд▓реЛрдЧ рдиреЛрдб 6 рдХреЛ рдЕрд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ рдбрд╛рдЙрдирдЧреНрд░реЗрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рддрд╛рдХрд┐ рд╡реЗ рдкрд╛ рд╕рдХреЗрдВ рдХрд┐ рдХрд┐рд╕ рдЯрд╛рдЗрдорд░ рдХреЛ рд░рджреНрдж рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдпрд╛ рдлрд┐рд░ ' unref рдХрд╛ рдПрдбред рдЖрдк рд▓реЛрдЧреЛрдВ рдХреЛ рд╕рдлрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП after рдФрд░ afterEach рд╣реБрдХ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдХрд╣рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВред

(рдХреНрдпрд╛ рдХреЛрдИ рд╡реИрд╢реНрд╡рд┐рдХ "рд╣реБрдХ" рдХреЗ рдмрд╛рдж рдореЛрдЪрд╛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдкреВрд░реНрдг рд╣реЛрддреЗ рд╣реИрдВ?)

рдХрд┐рд╕реА рднреА рдШрдЯрдирд╛ рдореЗрдВ, рдореИрдВ рдорджрдж рдХреА рд╕рд░рд╛рд╣рдирд╛ рдХрд░рддрд╛ рд╣реВрдВ, рдФрд░ рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдЖрдк рдпрд╣ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рдЪрд╛рд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ --expose-internals рдХреЗрд╡рд▓ рдиреЛрдб <= 6 рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрдХреАрди рд╣реИ? рдореИрдВрдиреЗ Node 8.6.0 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрджреНрдпрдкрд┐ рд╕рднреА OSes рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдмреЙрдХреНрд╕ рдореЗрдВ рдЖрдЧ рд▓рдЧрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЯреНрд░рд┐рдкрд▓-рдЪреЗрдХ ...

рдпрд╣рд╛рдБ рдЗрд╕ рд╕рдордп рдХреЗ рд▓рд┐рдП

рдХреНрдпрд╛ рдЖрдкрдХреЛ рдпрдХреАрди рд╣реИ? рдореИрдВрдиреЗ Node 8.6.0 рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ред рдпрджреНрдпрдкрд┐ рд╕рднреА OSes рдкрд░ рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рд╣рд░ рдмреЙрдХреНрд╕ рдореЗрдВ рдЖрдЧ рд▓рдЧрд╛рдиреА рдЪрд╛рд╣рд┐рдП рдФрд░ рдЯреНрд░рд┐рдкрд▓-рдЪреЗрдХ ...

рдпрд╣ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдореЗрдВ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдиреЛрдбреНрд╕ .js. рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред

рдореИрдВ рд╕рд╛рдЗрдЯ рдкрд░ рдХреБрдЫ рдЕрдкрдбреЗрдЯ рдЬреЛрдбрд╝рдиреЗ рдЬрд╛ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдХреГрдкрдпрд╛ рдореЗрд░реА рдЖрдЧрд╛рдореА рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЛ # 3045 рдкрд░ рджреЗрдЦреЗрдВред

рдпрд╣ "рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ" рдореЗрдВ рдпрд╣ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЯреНрд░рд┐рдЧрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореБрдЭреЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдиреЛрдбреНрд╕ .js. рдХреЗ рд╕рдВрд╕реНрдХрд░рдг рдХреА рдкрд░рд╡рд╛рд╣ рдХрд┐рдП рдмрд┐рдирд╛ред

рдпрд╣ setTimeout рдФрд░ setImmediate рд▓рд┐рдП рдПрдХ рдЙрдкрдпреЛрдЧреА рд╕реНрдЯреИрдХрдЯреНрд░реЗрд╕ рджреЗрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд┐рд▓реНрдХреБрд▓ рднреА рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдПрдХ рд╢реНрд░рд╡рдг рд╕рд░реНрд╡рд░ (рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЕрднреА рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдкрд╛рдпрд╛, рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдХрд░рддреЗ рд╣реБрдП)ред рдЬреАрд╕реНрдЯ рдореЗрдВ "рдПрд╕рд┐рдВрдХреНрд╕-рдбрдВрдк" рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣рд░ рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдн рд╣реИ (рдФрд░ --expose-internals рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ), рднрд▓реЗ рд╣реА рдпрд╣ рдиреЛрдб рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдЙрдкрдпреЛрдЧреА рд╣реЛред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореЗрд░реА рд╕рд╛рдорд╛рдиреНрдп рд╕рд▓рд╛рд╣ "рдпрджрд┐ рдЖрдк рдЕрдкрдиреЗ рдмрд╛рд▓реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдмрд╕ --exit рдФрд░ рдЖрд░рд╛рдо рдХрд░реЗрдВ"ред рдлрд┐рд░ рдЕрдкрдиреЗ рдЕрдЧрд▓реЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЗрд╕рдХрд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рди рдХрд░реЗрдВ: рдкрд▓рдХ:

рдмрдВрдж рдкреАрдЖрд░ рдкрд░ рдлрд┐рд░ рд╕реЗ рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣рд╛рдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдЕрдиреБрдХреВрд▓ рд╕рдорд╛рдзрд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

рдзрд╛рд╡рдХ 3s рдпрд╛ рддреЛ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдмрджрд▓реЗ рд╣реБрдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪреЗрддрд╛рд╡рдиреА рд▓реЙрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рд╛ред
рдмрд╕ рдзрд╛рд╡рдХ рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж setTimeout() рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдордЖрдЙрдЯ. unref () рдХреЙрд▓ рдХрд░реЗрдВ рдХрд┐ рдпрд╣ рдЯрд╛рдЗрдордЖрдЙрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдирд╣реАрдВ рд░реЛрдХрддрд╛ рд╣реИред рдпрджрд┐ рдЯрд╛рдЗрдордЖрдЙрдЯ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЪреЗрддрд╛рд╡рдиреА рдХреЗ рд▓рд┐рдП рд╕рдордп рд╣реИ execut

рдореИрдВрдиреЗ рдорд╛рдирд╛ рд╣реИ рдХрд┐ рд▓реЗрдХрд┐рди рдореИрдВ рд╕рд╛рд╡рдзрд╛рди рд╣реВрдВ рдХрд┐ рдпрд╣ рдкрддреНрд░рдХрд╛рд░реЛрдВ рдпрд╛ рдЕрдиреНрдп рдПрдХреАрдХрд░рдг рдХреЗ рд╕рд╛рде рдЕрдиреНрдп рд╕рдорд╕реНрдпрд╛рдУрдВ рдХрд╛ рдХрд╛рд░рдг рдмрдиреЗрдЧрд╛ ... рдореИрдВ рдпрд╣ рд╕рд╛рдмрд┐рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рдХрд┐ рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред

рдпрджрд┐ рдЖрдкрдХреЛ рдЕрднреА рднреА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ рдФрд░ why-is-node-running рд╕рд╣реА рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рддреЛ wtfnode рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред

рдЙрд╕ рдкреИрдХреЗрдЬ рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдмреЗрд╣рддрд░ рдХрд╛рдо рдХрд┐рдпрд╛ред

рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдХреИрд╕реЗ рдореМрдЬреВрджрд╛ рдкрд░реАрдХреНрд╖рдг рдЕрдЪрд╛рдирдХ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдХрдо рд╕реЗ рдХрдо рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП) рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯрд┐рдВрдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдореБрдЭреЗ рдЬрд╛рд░реА рдиреЛрдЯреЛрдВ рдореЗрдВ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдЙрд▓реНрд▓реЗрдЦ рджрд┐рдЦрд╛рдИ рджреЗрддрд╛ рд╣реИред

рдореИрдВрдиреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдирдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЧрд▓рддреА рд╕реЗ рдмрджрд▓ рджрд┐рдпрд╛, рдЬрд┐рд╕рд╕реЗ рдореБрдЭреЗ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рд╣реЛрдирд╛ рдкрдбрд╝рд╛ рдХрд┐ рдореИрдВрдиреЗ рдмрд╛рдж рдореЗрдВ () рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ redis.quit () рдХрд╣рд╛ рдФрд░ рдореИрдВ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реЗ рдкреНрд░рд╕рдиреНрди рд╣реВрдВ, рдЬреЛ рдореБрдЭреЗ рд╕рд╣реА рдФрд░ рдЙрдЪрд┐рдд рд▓рдЧрддрд╛ рд╣реИред

рдЗрд╕ рдмрд╛рд░ рдореБрдЭреЗ [рдЗрд╕ gist] рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рдереА, рд▓реЗрдХрд┐рди рдЬреИрд╕рд╛ рдХрд┐ рдкрд╣рд▓реЗ рд╣реА @boneskull рджреНрд╡рд╛рд░рд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ async рдХрд╛рд░реНрдп рдкреВрд░рд╛ рдирд╣реАрдВ рд╣реБрдЖ рд╣реИ рдФрд░ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдкрдХрдбрд╝реЗ рд╣реБрдП рд╣реИред

рдореБрдЭреЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдореИрдВ рд╕рдВрджрд░реНрднрд┐рдд рдЯрд┐рдХрдЯреЛрдВ рдореЗрдВ рдЙрди рдореБрджреНрджреЛрдВ рдХреЛ рдирд╣реАрдВ рд╕рдордЭрддрд╛ рдЬреЛ рдЗрд╕ рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдкреАрдЫреЗ рд╣реИрдВред

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

рдЕрдЧрд░ рдРрд╕рд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдЙрди рдореБрджреНрджреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдореЛрдЪрд╛ рдХрд╛ рдХрд╛рдо рдХреИрд╕реЗ рд╣реИред рдФрд░ рдЕрдЧрд░ рдЙрди рдореБрджреНрджреЛрдВ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЬрд╛рджреВ рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рдП, рдЬреЛ рд╡рд░реНрддрдорд╛рди (рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП) рдкрд░реАрдХреНрд╖рдг рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рд▓рдЯрдХ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рд╡рд╣ рдЬрд╛рджреВ рдПрдХ рдСрдкреНрдЯ-рдЗрди рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рди рдХрд┐ рдСрдкреНрдЯ-рдЖрдЙрдЯ рдПрдХ - рдпрд╛рдиреА --no-exit рдмрдЬрд╛рдп --exit ред

рдореИрдВ рдЕрдкрдиреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рдиреЛрдб-рдореЛрдВрдЧреЛрдбрдм-рджреЗрд╢реА рдбреНрд░рд╛рдЗрд╡рд░ рдХреЛ рд▓рдЯрдХрд╛рддреЗ рд╣реБрдП рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдбреНрд░рд╛рдЗрд╡рд░ рдкреВрд▓ .close() рдкрд░ рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рд╣реЛред рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдирд╣реАрдВ рд╣реИ (рдпрд╛ рдпрд╣ рд╣реИ? рдореИрдВ рдПрдХ рддрдереНрдп рдХреЗ рд▓рд┐рдП рдЬрд░реВрд░реА рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдХрд┐ рдпрд╣ рдЦрд░рд╛рдм рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╣реАрдВ рдФрд░ рдмрд╛рд╣рд░ рд╣реИ - рдХреНрдпрд╛ рдЖрдк? рддреЛ рдореИрдВ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ? рдореЗрд░рд╛ рдХреЛрдб, рдпрд╛ рдХрд┐рд╕реА рдФрд░ рдХрд╛? рдореБрдЭреЗ рд▓рдЧрд╛ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдирд╣реАрдВред

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

рдЕрдЧрд░ рдореИрдВ рдПрдХ рдЬреЛрдбрд╝рдиреЗ process.exit() рдлрд╛рдЗрдирд▓ рдореЗрдВ after() рд╣реБрдХ, рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рд░рдЦрддреА рд╣реВрдБ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рдЗрд╕рдХреЗ рд╕рд╛рде рдмреБрд░реА рддрд░рд╣ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ --watch рди рдХреЗрд╡рд▓ (рд╕рдВрднрд╡рддрдГ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ), рдореБрдЭреЗ рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдПрдХ рдмрд┐рдирд╛ рдЦреЛрд▓ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдпрд╣рд╛рдБ рдХреНрд▓реВрд▓реЗрд╕ рд╣реВрдВ (рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдмрд╣реБрдд рдХреБрдЫ рд╣реИ рдЬреЛ рдореБрдЭреЗ рдирд╣реАрдВ рдорд┐рд▓ рд░рд╣рд╛ рд╣реИ, рдФрд░ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд▓реЛрдЧ рдЗрд╕рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реЛ рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдРрд╕рд╛ рд╕реЛрдЪрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ :)), рдореБрдЭреЗ рдмрд╕ рдпрд╣ рдкреВрд░рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдмрд╛рдд рдХрд╛рдлреА рдирд╣реАрдВ рд╣реИ ... рд╕рд╣реА рд╣реИ ...?

рдЪрд┐рдпрд░реНрд╕ :)

EDIT: рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП, рдХреНрдпрд╛ рдореЗрд░реЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдЯреЗрд╕реНрдЯ рдХреЗ рдЕрдВрджрд░ рдЬрд╛рдВрдЪрдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЗрд╕реЗ --watch рд╕рд╛рде рдЪрд▓рд╛рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ рддрд╛рдХрд┐ рдореИрдВ process.exit() рдХреЙрд▓ рди рдХрд░ рд╕рдХреВрдВ рдФрд░ рдЪреАрдЬреЛрдВ рдХреЛ рддреЛрдбрд╝ рд╕рдХреВрдВ?

@DanielSmedegaardBuus TL; рд╕рдорд╛рдзрд╛рди рдкрд░ DR: --exit mocha.opts рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред (рдпрд╣ рдЖрдорддреМрд░ рдкрд░ рдХрд┐рд╕реА рднреА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рд╣реИ рдЬрд┐рд╕реЗ рдореЛрдЪрд╛ рдЪрд▓рд╛рдиреЗ рдкрд░ рд╣рдореЗрд╢рд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдЯрд┐рдк рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред) рдпрд╣ рдкрд░рд┐рд╡рд░реНрддрди рдХреНрдпрд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг: рдиреАрдЪреЗред

2640 рд╡рд╛рджрд╛ рдЕрд╕реНрд╡реАрдХрд╛рд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХрд╛ рдЗрд░рд╛рджрд╛ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдиреНрд╣реЗрдВ рдЧреИрд░-рд╡рд╛рджрд╛ рдПрд╕рд┐рдВрдХреНрд░реЛрдирд╕ рдкрд░реАрдХреНрд╖рдг рдХреЛрдб рд╕реЗ рдлреЗрдВрдХреЗ рдЧрдП рддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдЕрдкрд╡рд╛рджреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рдмрдирд╛рддреЗ рд╣реИрдВ, рдФрд░ рдЕрднреА рддрдХ рд▓рд╛рдЧреВ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред

рдпрд╣ рд╕рдВрд╕рд╛рдзрдиреЛрдВ, рд╢реНрд░реЛрддрд╛рдУрдВ рдпрд╛ рдЪрд▓ рд░рд╣реЗ рдХрд╛рдореЛрдВ рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рд╕рд╛рдл рди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рднрд▓реЗ рд╣реА рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ / рдпрд╛ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рд╡рд╛рджреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реЛред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

рдореЗрд░реЗ рдкрд╛рд╕ рд╡реЗрдмрд╕реНрдХреИрдЯ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдкреАрдЖрдИ рдХреЗ рд▓рд┐рдП рдПрдХ рдкрд░реАрдХреНрд╖рдг рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдХрдиреЗрдХреНрд╢рди рдЦреЛрд▓рдирд╛ рдФрд░ рдмрдВрдж рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред рдпрд╣ рдПрдкреАрдЖрдИ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдереА рдФрд░ рдХрдиреЗрдХреНрд╢рди рдХреЛ рдмрдВрдж рдирд╣реАрдВ рдХрд░ рд░рд╣реА рдереА, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░ рджрд┐рдпрд╛ рдХреНрдпреЛрдВрдХрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рджрд╛рд╡рд╛ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рдерд╛ рдХрд┐ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рдХрдиреЗрдХреНрд╢рди рдХреЛ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред (рдпрджрд┐ рдореИрдВрдиреЗ рдХреЗрд╡рд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХрд╛ рдХрдбрд╝рд╛рдИ рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдерд╛, рддреЛ рдореИрдВ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдпрд╣ рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдореИрдВрдиреЗ рдЧрд▓рддреА рд╕реЗ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рд╕реЛрдЪрд╛ рдерд╛; рдореИрдВ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реЗрдмрд╕реНрдХреИрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдкрд╣рд▓реА рдмрд╛рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рд╢реБрджреНрдзрддрд╛ рдХреЗ рд╕рд╛рде рдореБрджреНрджреЛрдВ рдХреЛ рдкрдХрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП - рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдг рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкреВрд░рдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред) рдореИрдВрдиреЗ рдЙрд╕ рддреНрд░реБрдЯрд┐ рдХреЛ рдкрдХрдбрд╝рд╛, рдЬрдм рдореИрдВ --no-exit рд╡реНрдпрд╡рд╣рд╛рд░ (Mocha 3 рдХрд╛;) рдЕрдм Mocha 4 рдореЗрдВ рдбрд┐рдлрд╝реЙрд▓реНрдЯ) рдореЗрдВ рдмрджрд▓ рдЧрдпрд╛ рдФрд░ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдЕрдЧрд░ рдореИрдВ рдЙрди рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдЪрд▓рд╛рддрд╛ рддреЛ рдиреЛрдб рдмрдВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡реЗрдмрд╕реИрдЯ рдХрдиреЗрдХреНрд╢рди рдЕрднреА рднреА рд╕реБрди рд░рд╣рд╛ рд╣реИред

(рдпрд╣ рд╕рдЪ рд╣реИ рдХрд┐ рдпрд╣ рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рддреНрд░реБрдЯрд┐ рдЖрдкрдХреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХреЛрдб рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╣реЛ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдореВрд▓реНрдп рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рдЖрдк рдЙрд╕ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рджрд┐рдП рдЧрдП рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЬрд╣рд╛рдЬ рдХрд░реЗрдВ - рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рд╕реЗ рдмрддрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдпрд╣ рд╣реИ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рдкрд░ рдПрдХреАрдХрд░рдг рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд▓рд╛рдЧреВ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рджреЛрдиреЛрдВ рд╣реИрдВред)

рдпрд╣ рд╣рдореЗрд╢рд╛ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ - рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рдЗрд╕ рдкреНрд░рдХреГрддрд┐ рдХреЗ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рд░реЗ рдЬрд╛рдиреЗ рддрдХ рдЬреАрд╡рд┐рдд рд░рд╣рдиреЗ рдХрд╛ рдорддрд▓рдм рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ рдиреЛрдб рдХреЛ рдЬреАрд╡рд┐рдд рд░рдЦ рд╕рдХрддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рд╕рдВрд╕рд╛рдзрди рдХрд╛ рдХреЛрдИ рдЕрдиреНрдп рд╕рдлрд╛рдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛, рдпрд╛ рдПрдХ рд╕рдВрд╕рд╛рдзрди рдкреВрд▓ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рд╡реНрдпрдХреНрддрд┐рдЧрдд рд╕рджрд╕реНрдпреЛрдВ рдХреЛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдкреВрд▓ рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдРрд╕реЗ рдорд╛рдорд▓реЛрдВ рдореЗрдВ --exit рд╕рд╣реА рд╣реЛрдЧрд╛ ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рдЗрд╕ рддрд░рд╣ рдХреЗ рдореБрджреНрджреЛрдВ рдХреА рджреГрд╢реНрдпрддрд╛ рдХреЛ рдмрдврд╝рд╛рдирд╛ рдерд╛: рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ, рдЖрдк рд╢рд╛рдпрдж --no-exit рдХреЛрд╢рд┐рд╢ рдХрд░рдирд╛ рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХреА рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЬрд╛рдВрдЪ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдЕрдм рдЖрдк рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдирдореЗрдВ рднрд╛рдЧ рд▓реЗрдВрдЧреЗред рдФрд░ рдпрджрд┐ рдЖрдк рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕рд╣реА рд╣реИ (рдпрд╛ рдХрдо рд╕реЗ рдХрдо рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЪрд┐рдВрддрд╛ рдХрд░рдиреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ) рддреЛ --exit рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, "рдлрд┐рдХреНрд╕" рдХреЗ рд╕рд╛рде рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реИ рдЬреЛ рд╕рд┐рд░реНрдл рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдпрд╣ рдмрд╣реБрдд рдЬрд╛рдирдХрд╛рд░реАрдкреВрд░реНрдг рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ ред рдпрджрд┐ рд╣рдореЗрдВ рдЕрднреА рднреА рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рдЪреАрдЬрд╝реЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдЗрд╕рд▓рд┐рдП рдПрдХ рдЙрдЪрд┐рдд рдЪреЗрддрд╛рд╡рдиреА рдпрд╛ рддреНрд░реБрдЯрд┐ рджреА рдЬрд╛ рд╕рдХрддреА рд╣реИ) рдЬреЛ рдХрд┐ рдмрд┐рдирд╛ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд╣рд╕реНрддрдХреНрд╖реЗрдк рдХреЗ рдмрд┐рдирд╛ рдиреЛрдб рдХреЗ рд╕рднреА рд╕рдорд░реНрдерд┐рдд рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдкрд░ рдХрд╛рдо рдХрд░реЗрдЧреАред рдореЛрдЪрд╛ рдХреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдкрд░ рд╕рдлрд╛рдИ рдпрд╛ рдмрдВрдж рдХрд░рдирд╛ред

рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рдмрд╣реБрдд рдирд┐рд░рд╛рд╢рд╛рдЬрдирдХ рдерд╛ред рдореИрдВ рд╕рд┐рд░реНрдл рдпрд╣ рдЬрд╛рдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ рдХрд┐ рдореЛрдЪрд╛ рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдЖрдПрдЧрд╛ред https://boneskull.com/mocha-v4-nears-release/#mochawontforceexit why-is-node-running рд▓рд┐рдВрдХ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдм рдореИрдВ рдЪрд▓рд╛ рдЧрдпрд╛ рд╣реВрдВ, рдЙрд╕ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, 'рдЧреБрдкреНрдд' рдореЙрдбреНрдпреВрд▓ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИред рдЖрдВрддрд░рд┐рдХ / рд▓рд┐рдВрдХреНрдбрд▓рд┐рд╕реНрдЯ '... (рд╕реНрдЯреИрдХ рдЯреНрд░реЗрд╕) ", рдФрд░ рдЦрд░рдЧреЛрд╢ рдЫреЗрдж рдХрд╛ рдЕрдиреБрд╕рд░рдг рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реИ рдХрд┐ --expose-internals рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдореИрдВ https://github.com/mochajs/mocha/ рдкрд░ рд╣рд╡рд╛ рдХрд░рддрд╛ рд╣реВрдВ why-is-node-running рдореБрдЭреЗ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЦреБрд▓рд╛ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП 1 рдЬреНрдЮрд╛рдд рд╣реИрдВрдбрд▓ рд╣реИ, рдФрд░ рдХреБрдЫ рдЕрдЬреНрдЮрд╛рдд рд╣реИрдВрдбрд▓ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдХреБрдЫ рднреА рд╕реВрдЪреАрдмрджреНрдз рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдЗрд╕реЗ рд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╕рд╣реА рдЬрдЧрд╣ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдореЛрдЪрд╛ рдХреЗ рдбреЙрдХреНрд╕ рдХреЛ рдРрд╕реЗ рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдирд╣реАрдВ рдХреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдП, рдЬрд┐рдиреНрд╣реЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рддрд░рд╣ рдХреЗ googling рдФрд░ рдбрд╛рдЗрд╡рд┐рдВрдЧ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ ред рдореИрдВ рдмрд╣реБрдд рд╣реА рдЕрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд╕рд╛рде рдЪреАрдЬреЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рдерд╛ред рднрд╡рд┐рд╖реНрдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рдореЗрд░реА рдкрд╡рд┐рддреНрд░рддрд╛ рдХреЗ рд▓рд┐рдП:

package.json:

"scripts": {
    "test": "mocha --exit"
}

рдпрд╣реА рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдореИрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

@ рдЬреЗрдлрд╡рд┐рдиреНрдбреАрдХреЗ рдореИрдВ рдЖрдкрдХреА рдирд┐рд░рд╛рд╢рд╛ рдХреЛ рд╕рдордЭрддрд╛ рд╣реВрдВ рдФрд░ рдЙрдиреНрд╣реАрдВ рдореБрджреНрджреЛрдВ рд╕реЗ

рдореЗрд░реЗ рдкрд╛рд╕ рдХрдИ рдРрдирдХ рдереЗ рдЬрд┐рдирдореЗрдВ рдкрд░рддрджрд╛рд░ async рд╡реНрдпрд╡рд╣рд╛рд░ рдерд╛ред рдореЗрд░реЗ рдЪрд╢реНрдореЗ рдХреЗ рд░рди рдСрд░реНрдбрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдЕрдирдЪреЗрдХ рдХрд┐рдП рдЧрдП рд╡рд╛рджреЗ рдЕрд╕реНрд╡реАрдХреГрддрд┐ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рдХрдВрд╕реЛрд▓ рдореЗрдВ рд▓реЙрдЧ рдЗрди рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдлрд┐рд░ рджреГрд╖реНрдЯрд┐ рдХреЗ рдмрд╛рд╣рд░ рд╕реНрдХреНрд░реЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдЬреЛ рдХрд┐ рдкрд╛рд░рд┐рдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реИрдХрдбрд╝реЛрдВ рдЕрдиреНрдп рдкрд░реАрдХреНрд╖рдг, рдпрд╛ рдиреЛрдб рдЙрджрд╛рд╣рд░рдг рдмрдВрдж рд╣реЛ рдЬрд╛рдПрдВрдЧреЗред

рдореЗрд░реЗ mocha.opts --exit рд╕реЗ

рдореБрдЭреЗ рдкрддрд╛ рд╣реИ, рдмрд╣реБрдд рд╕реЗ рд╕рд╛рдЭрд╛ рджрд░реНрдж :) рдореЛрдЪрд╛ рдХрд╛ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдореЗрд░реЗ 5 рдкрд░реАрдХреНрд╖рдг рдХрд╛рдлреА рд╕рд░рд▓ рд▓рдЧрддреЗ рд╣реИрдВ, рдмрд╕ рдПрдХ рдПрдкреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб-рднреНрд░реВрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, рдореИрдВ рдЕрднреА рднреА рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдореЛрдЪрд╛ рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ , рднрд▓реЗ рд╣реА рд╡реЗ рд╕рднреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрддреНрддреАрд░реНрдг рд╣реЛрдВ (рд╣рд╛рдБ, рд╡реЗ рдЕрд╕рдлрд▓ рднреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ)ред рдореИрдВ рдпрд╣ рдЬрд╛рдирдиреЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ why-is-node-running рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдЕрдиреНрдп рд▓реЛрдЧреЛрдВ рдХреЗ рдХреЛрдб рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрдХрд░ рдердХ рдЧрдпрд╛ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЦреБрдж рдХреЛ рдЕрднреА рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рд░рд╛рдо рджреВрдВрдЧрд╛ред

рдореИрдВ рд╢рд╛рдпрдж рдЗрд╕рдХреЗ рд╕рд╛рде рдЦреЗрд▓рддрд╛ рд░рд╣реВрдВрдЧрд╛, рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рдХреБрдЫ рдкреНрд░рдЬрдирди рдпреЛрдЧреНрдп рдорд┐рд▓ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдПрдХ рдирдпрд╛ рдореБрджреНрджрд╛ рдЦреЛрд▓ рд╕рдХрддрд╛ рд╣реВрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреЛрдИ рд╡рд╛рджрд╛ рдирд╣реАрдВред

рдирдП рдиреЛрдб рдЗрдВрд╕реНрдкреЗрдХреНрдЯрд░ рдХреЗ рдбрд┐рдмрдЧрд░ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реЗрдВрдЧреЗ ... рдЗрд╕рдореЗрдВ рдЕрдЪреНрдЫреЗ рдПрд╕рд┐рдВрдХреНрд╕ рдирд┐рд╢рд╛рди рд╣реИрдВред

рд╡рд╛рд╣! рдЗрд╕ рдкрд░ рдкреНрд░рдХрд╛рд╢ рдмрд╣рд╛рдиреЗ рдореЗрдВ wtfnode рдХреА рдУрд░ result.text() рдпрд╛ .json() рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓рд╛ рд░рд╣реЗрдЧрд╛ред wtfnode ./node_modules/.bin/_mocha рдЪрд▓рдирд╛ рдФрд░ Ctrl-C рджрдмрд╛рдиреЗ рд╕реЗ рдЦреБрд▓реЗ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдкрддрд╛ рдЪрд▓рд╛ред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рди рд╣реЛрддрд╛ рдЕрдЧрд░ рдбреЙрдХреНрд╕ why-is-node-running рдмрдЬрд╛рдп рдЗрд╕ рдкреИрдХреЗрдЬ рдХреА рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░рддреЗред

рдПрдХ рдФрд░ рд╕реБрдЭрд╛рд╡: рдЕрдЧрд░ рдореЛрдЪрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓реЗ рддреЛ рдореБрдЭреЗ @andywer рдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдХреА рдЪреЗрддрд╛рд╡рдиреА рджреЗрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдкрд╕рдВрдж рд╣реИред рдХреБрдЫ рд╕рдордп рдмреАрдд рдЬрд╛рдиреЗ рдХреЗ рдмрд╛рдж рдиреЛрдб рдХреЛ рдЬреАрд╡рд┐рдд рд░рдЦрдиреЗ рд╡рд╛рд▓реЗ рд╕рдХреНрд░рд┐рдп рд╣реИрдВрдбрд▓ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрджрд┐ рдореЛрдЪрд╛ wtfnode рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдореАрдард╛ рд╣реЛрдЧрд╛ред

рдЬреЛ рднреА рд╕рд╣реА рдЪреАрдЬ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрдЪрд░рд╛ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рджреВрд░ рдЬрд╛рдирд╛ рдерд╛ рдХрд┐ рдореЛрдЪрд╛ рдмрд╛рд╣рд░ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдВрдЧреЗред рд╡реИрд╕реЗ рднреА, рдореИрдВрдиреЗ рдЕрдкрдиреЗ рд╕реБрдЭрд╛рд╡ рджрд┐рдП рд╣реИрдВ :)

рд╣рд╛рдп рджреЛрд╕реНрддреЛрдВ,
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдЕрднреА рднреА рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдкрд░реАрдХреНрд╖рдг рдореИрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдореЛрдЪрд╛ рдЕрднреА рднреА рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИ рд╣реИред --no-exit рдПрдХ рдЙрддреНрдХреГрд╖реНрдЯ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдХрд▓реНрдк рд╣реИ рдФрд░ рдореИрдВ рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕рдмрдХреБрдЫ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╛ рддреЛ рдореИрдВ рдпрд╣ рд╕рдордЭрдиреЗ рдореЗрдВ рдЕрд╕рдлрд▓ рд╣реЛ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдпрд╛ рдХреЛрдИ рдЪреАрдЬ рдЖрдВрддрд░рд┐рдХ рд░реВрдк рд╕реЗ рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рдЧрд▓рдд рд╣реИ рдФрд░ рдпрд╣ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рднреА рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд░рд╣рд╛ рд╣реИред

describe('describe', function() { it('it', function(done) { done(); }); });

рд╕рд╛рд░рд╛рдВрд╢: --exit рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, --no-exit рдХрднреА рднреА рдХреЛрдИ рдкрд░реАрдХреНрд╖рдг рдмрдВрдж рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред

рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдореИрдВ рдХреЛрдЖ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдФрд░ рдореЛрдЪрд╛ 4 + рд╕реБрдкрд░рдЯреЗрд╕реНрдЯ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

рдореБрдЭреЗ рд░рд┐рд▓реАрдЬрд╝ рдиреЛрдЯреЛрдВ рдХреЗ рдмрд╛рдж "рдЭреВрдареЗ рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП" done рдХреЙрд▓ рдХреЗ рд╕рд╛рде рдмрд╕ рд╕рд░реНрд╡рд░ рдХреЛ

рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ:

request(app.listen())
  .post('/')
  .send(requestSrc)
  .expect({ f: {} }, done)

рдЙрдкрд░рд╛рдВрдд:

const server = app.listen()

request(server)
  .post('/')
  .send(requestSrc)
  .expect({ f: {} }, () => {
    server.close()
    done()
  })

рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ somenoe рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИред

рдореИрдВ рд╣рд░ рдЯреЗрд╕реНрдЯ рд╕реЗ рдкрд╣рд▓реЗ рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмреВрдЯрд╕реНрдЯреНрд░реИрдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдореВрд▓ рд░реВрдк рд╕реЗ рдЙрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдереЛрдбрд╝рд╛ HTTP рд╕рд░реНрд╡рд░ рд╢реБрд░реВ рдХрд░рдирд╛ред

рдХреНрдпрд╛ рдХреЛрдИ рдРрд╕рд╛ рдХрд╛рд░реНрдпрдХреНрд░рдо рд╣реИ рдЬрд┐рд╕реЗ рдореИрдВ рдмрдВрдж рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХреНрдпреЛрдВрдХрд┐ рдореЛрдЪрд╛ рдХреЗ рдЪрд▓рдиреЗ рдкрд░ рдпрд╣ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? рдореИрдВ рдмрд╕ рдЗрд╕реЗ рдмрдВрдж рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рд╕рд┐рд░реНрдл рдЙрд╕ рд╕рдордпред

рдореБрдЭреЗ рдЗрд╕ рдлреАрдЪрд░ рдХреЗ рдкреАрдЫреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдкреНрдпрд╛рд░ рд╣реИ .. рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХреНрдпрд╛ рдЖрдкрдХреЗ рдкрд╛рд╕ рдЭреВрд▓рдиреЗ рдХреА рдШрдЯрдирд╛ рд╣реИ, рдпрд╣ рдПрдХ рдЕрдЪреНрдЫреА рдкрд░реАрдХреНрд╖рд╛ рд╣реИред

@evert after рдореЗрдВ рд╕рд░реНрд╡рд░ рдмрдВрдж рдХрд░рдиреЗ рдХрд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ?

рдХреНрдпрд╛ рдореЛрдЪрд╛ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдЪрд▓рдиреЗ рд╡рд╛рд▓реА рд╡реИрд╢реНрд╡рд┐рдХ 'рд╕рдм рдХреБрдЫ' рдХреЗ рдмрд╛рдж рд╣реИ? рдореБрдЭреЗ рд╡реЛ рдпрд╛рдж рдЖ рдЧрдпрд╛ рд╣реЛрдЧрд╛! рдбреЙрдХреНрд╕ рдореЗрдВ рдирд╣реАрдВ рдорд┐рд▓ рд╕рдХрд╛ред

рд╣рд╛рдВ, рд╡реИрд╢реНрд╡рд┐рдХ after рд╣реБрдХ рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж! рдореБрдЭреЗ рдпрд╛рдж рдЖрдпрд╛ рдХрд┐, рдХреНрд╖рдорд╛ рдХрд░реЗрдВ: / ctrl-f рдХреЗ рд▓рд┐рдП рд╢рд░реНрддреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдерд╛ред

wtfnode рдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛ред рдореИрдВ рджреЗрдЦ рд╕рдХрддрд╛ рдерд╛ рдХрд┐ рдореЛрдЪрд╛ рджреНрд╡рд╛рд░рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдХреБрдЫ рдкреАрдЖрдИрдбреА тАЛтАЛрд▓рдЯрдХ рдЧрдИ рдереАред

рджреВрд╕рд░реА рдУрд░, @boneskull gist рдиреЗ рдХрд╛рдо рдХрд┐рдпрд╛: https://github.com/mochajs/mocha/issues/3044#issuecomment -351299745ред рдзрдиреНрдпрд╡рд╛рдж!

wtfnode _mocha рд╡рд┐рд░реБрджреНрдз рдЪрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, mocha ред

--exit рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдЗрд╕рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдЗрд╕реЗ рдареАрдХ рдХрд░ рджрд┐рдпрд╛ред

рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ package.json рдореЗрдВ рджрд░реНрдЬ рдХрд░реЗрдВ:
"рд╕реНрдХреНрд░рд┐рдкреНрдЯ": {
"рдкрд░реАрдХреНрд╖рдг": "рдореЛрдЪрд╛ - рдПрдХреНрд╕рд┐рдЯ"
}

рдореИрдВрдиреЗ рдЗрд╕ рд╕реВрддреНрд░ рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдЙрдкрд╛рдпреЛрдВ рдХреЛ рдЖрдЬрдорд╛рдпрд╛:

  • рдХреНрдпреЛрдВ-рдиреЛрдб-рд░рдирд┐рдВрдЧ рдХреЛрдИ рдЖрдЙрдЯрдкреБрдЯ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ
  • wtfnode рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреЛрдб рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ / рд╕реЙрдХреЗрдЯ / рд╕рд░реНрд╡рд░ / рдЯрд╛рдЗрдорд░ рдХрд╣рд╛рдБ рдмрдирд╛рдП рдЧрдП рд╣реИрдВ
  • async_hooks рдбреАрдмрдЧ рд╡рд┐рдзрд┐ рддреНрд░реБрдЯрд┐рдпрд╛рдБ
  • mxha cmd рд▓рд╛рдЗрди рдлреНрд▓реИрдЧ рдореЗрдВ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдирд┐рдХрд▓рддрд╛ рд╣реИ

рдЗрд╕рд▓рд┐рдП @ProfJ╞░ рдХрд╛ рдкрд╛рд▓рди рдХрд░реЗрдВ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ, рдпрд╣реА рдореИрдВ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдорд╣рд╛рди рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореЛрдЪрд╛ рджреНрд╡рд╛рд░рд╛ рдПрдХ рд╕реБрдзрд╛рд░ рдерд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореБрджреНрджреЗ рдХрд╣рд╛рдВ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрд╕реЗ рд╣рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдПред

рдпрд╣ рдПрдХ рдбрд┐рдмрдЧрд░ рдХреЗ рд▓рд┐рдП, IMO рд╣реИред рдпрджрд┐ рд╡реЗ рдХрднреА рдмрд╛рд╣рд░ рдирд╣реАрдВ рд╣реБрдП рддреЛ рдЖрдк рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдХреИрд╕реЗ рдбрд┐рдмрдЧ рдХрд░реЗрдВрдЧреЗ?

https://github.com/GoogleChromeLabs/ndb рдПрдХ рдЕрдЪреНрдЫрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╣реИред

рдСрдл-рдЯреЙрдкрд┐рдХ: рдореБрдЭреЗ рдпрд╣ рдЯрд┐рдХрдЯ рдмрд╣реБрдд рдкрд╕рдВрдж рд╣реИ, рдмрд╕ рд╕рдорд╕реНрдпрд╛ рдирд┐рд╡рд╛рд░рдг рд╕рд╛рдзрдиреЛрдВ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП рдпрд╣ рджреЗрддрд╛ рд░рд╣рддрд╛ рд╣реИ! :)

@borisovg рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЯрд┐рдХрдЯ рдХрд┐рддрдирд╛ рд╢рд╛рдирджрд╛рд░ рд╣реЛрдЧрд╛! :)
@boneskull рдХреНрдпрд╛ рдХреБрдЫ "рд╕реВрдЪреА рдлрд╝рд╛рдЗрд▓ рд╡рд┐рд╡рд░рдгрдХ / рд╕реЙрдХреЗрдЯ / рд╕рд░реНрд╡рд░ / рдЯрд╛рдЗрдорд░" рдбреАрдмрдЧрд░ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ рдЬрд┐рд╕рд╕реЗ рдореИрдВ рдЕрд╡рдЧрдд рдирд╣реАрдВ рд╣реВрдВ?

@mjgs рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдХрд┐рдпрд╛ - wtfnode рдХрд╛рдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдЬрдм рдореИрдВрдиреЗ рдЗрд╕реЗ _mocha рдмрд╛рдЗрдирд░реА рдХреЗ рд╕рд╛рде рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛, рди рдХрд┐ mocha рдПрдХ:

$ wtfnode ./node_modules/.bin/_mocha my-shitty-code.spec.js 


  tests
    тЬУ some test


  1 passing (5ms)

^C[WTF Node?] open handles:
- File descriptors: (note: stdio always exists)
  - fd 1 (tty) (stdio)
  - fd 2 (tty) (stdio)
- Servers:
  - :::8080 (HTTP)
    - Listeners:
      - request: (anonymous) @ /home/borisov/test/my-shitty-code.js:4
- Intervals:
  - (5000 ~ 5 s) (anonymous) @ /home/borisov/test/my-shitty-code.js:8

@borisovg рдЕрдкрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕реБрдкрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ wtfnode рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдПрдХ mongo рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ my-shitty-code.js рдореЗрдВ рд╕рднреА mongo рдХрдиреЗрдХреНрд╢рди рдмрдВрдж рдХрд░ рджрд┐рдП рдЧрдП рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдХрд╣реАрдВ рдФрд░ рд╕реЗ рд╣реИ, рдФрд░ wtfnode рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдЬрд╣рд╛рдБ рдпрд╣ рд╣реИ рд╕реЗред

рдпрджрд┐ wtfnode рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдПрдХ рдореЛрдВрдЧреЛ рдбреАрдмреА рдХрдиреЗрдХреНрд╢рди рдЦреБрд▓рд╛ рд╣реИ, рддреЛ рдпрд╣ рдЦреБрд▓рд╛ рд╣реИред рдЖрдк рдЗрд╕реЗ рдЧрд▓рдд рдХреНрдпреЛрдВ рдорд╛рдиреЗрдВрдЧреЗ?

@ рдХреНрдпрд╛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдиреЗ рдЬреЛ рдХреБрдЫ рднреА рд▓рд┐рдЦрд╛ рд╣реИ, рдЙрд╕рдХрд╛ рдЧрд▓рдд рдорддрд▓рдм

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

рдореИрдВ рдЗрд╕ рдореБрджреНрджреЗ рдореЗрдВ рдПрдХ рд╕рд░реНрд╡рд░рд╣реАрди рд╕рдорд╛рд░реЛрд╣ рд╣реИ рдХрд┐ Firebase рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рд▓рд┐рдЦрдиреЗ рдореЗрдВ рднрд╛рдЧ рдЧрдпрд╛ред рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИ SDK рдЕрдирд┐рд╢реНрдЪрд┐рдд рдХрд╛рд▓ рдХреЗ рд▓рд┐рдП рдПрдХ рдЦреБрд▓рд╛ рд╣реИрдВрдбрд▓ рд░рдЦрддрд╛ рд╣реИред рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди (рдФрд░ wtfnode рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдж рдХреЗ рд╕реБрдЭрд╛рд╡ рдХреЗ рдХрд╛рд░рдг, рдореИрдВ рдЙрд╕ рддрдереНрдп рдХреА рдкрд╣рдЪрд╛рди рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдерд╛ рдФрд░ рд╕рдбрд╝рдХ рд╕реЗ рдиреАрдЪреЗ рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдПрдХ рдЯрди рд╕рд┐рд░рджрд░реНрдж (рдФрд░ рд▓рд╛рдЧрдд) рдмрдЪрд╛рддрд╛ рдерд╛ред

рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, "рдпрджрд┐ рдпрд╣ рдПрдХреНрд╕ рд▓рдВрдмреЗ рд╕рдордп рддрдХ рд▓рдЯрдХрд╛ рд░рд╣рддрд╛ рд╣реИ рдФрд░ рдХрд┐рд╕реА рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдЯреЗрдХреНрд╕реНрдЯ рдХреЛ рд╕реНрдЯрдбрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдлреЗрдВрдХрддрд╛ рд╣реИ" рддрд░реНрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧрд╛ред рдореИрдВ рдЕрдирд┐рд╢реНрдЪрд┐рдд рд╣реВрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╕реБрдзрд╛рд░ рдХреЗ рд▓рд┐рдП рдХрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реИ рдпрд╛ рдХрд┐рддрдирд╛ рдмреИрдВрдбрд╡рд┐рдбреНрде рдЙрдкрд▓рдмреНрдз рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "mtha рдХреЗ рд╕рд╛рде wtf рдЪрд▓ рд░рд╣рд╛ рд╣реИ" рдХреБрдЫ рд╢реБрд░реБрдЖрддреА рдирд┐рд░рд╛рд╢рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓ рд╕рдХрддреА рд╣реИ!

var timers = sinon.useFakeTimers({
    now: new Date().getTime(),
    shouldAdvanceTime: true,
});

рдЕрдЧрд░ рдореИрдВ timers.restore(); рднреВрд▓ рдЬрд╛рдКрдВ рддреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП рд▓рдЯрдХ рдЬрд╛рддреА рд╣реИред

рдпрд╣рд╛рдВ рднреЗрдЬреЗ рдЧрдП рдкреНрд░рд▓реЗрдЦрди @pgilad рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдореЗрд░реЗ рд▓рд┐рдП рдПрдХ рдХреНрд▓реАрдирд░ рд╕рдорд╛рдзрд╛рди рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдбреЙрдХреНрдпреВрдореЗрдВрдЯреЗрд╢рди рдХрд╣рддрд╛ рд╣реИ:

рдЭреВрдареА рд╕рдХрд╛рд░рд╛рддреНрдордХрддрд╛ рд╕реЗ рдмрдЪрдиреЗ рдФрд░ рдмреЗрд╣рддрд░ рдкрд░реАрдХреНрд╖рдг рдкреНрд░рдерд╛рдУрдВ рдХреЛ рдкреНрд░реЛрддреНрд╕рд╛рд╣рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореЛрдЪрд╛ рдЕрдм рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЦреБрдж рдХреЛ рдирд╣реАрдВ рдорд╛рд░реЗрдЧрд╛ред () рдЬрдм рдпрд╣ рд╕реЛрдЪрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕реЗ рдЪрд▓рд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рдХреНрд▓реАрдирд░ рд╕рдорд╛рдзрд╛рди рддреЛ рдпрд╣ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ after рдлрд╝рдВрдХреНрд╢рди (рдПрдХ after рдХрд┐рд╕реА рднреА describe рдлрд╝рдВрдХреНрд╢рди) рдХреЗ рдмрд╛рд╣рд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрдЧрд╛, рдореИрдВ exit-mocha.js рддрд░рд╣ рдПрдХ рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд┐рдлрд╛рд░рд┐рд╢ рдХрд░реВрдВрдЧрд╛ exit-mocha рдЕрдЧрд░ рдЖрдк рдХрд░реЗрдВрдЧреЗред рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬреА рдЧрдИ рдХреЙрд▓рдмреИрдХ рдПрдХ рдЗрдорд╛рдирджрд╛рд░реА рд╕реЗ рдиреЛрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╛рдзреНрдп рдХрд░ рд╕рдХрддреА рд╣реИ рдЬреЛ рдмрд┐рдирд╛ рдХрд┐рд╕реА рддреНрд░реБрдЯрд┐ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реА рд╣реИред рдлрд╝рд╛рдЗрд▓ рдХреЛ mocha cli рдореЗрдВ рднреЗрдЬрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдПрдХ рдФрд░ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдереА (рдпрд╣ --exit рдзреНрд╡рдЬ рдХрд╛ рдЕрдиреБрдХрд░рдг рдХрд░ рд╕рдХрддреА рд╣реИ)

exit-mocha.js рдпрд╛ exit-mocha

after('Exit mocha gracefully after finishing all tests execution'. function () {
  // Exit node process
  process.exit();
});

рддрдм рдЖрдк рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ:

mocha exit-mocha test/**/*.spec.js

рдпрд╛

mocha exit-mocha.js test/**/*.spec.js

рдпрд╣ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЕрдЧрд░ рдЖрдк рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдЬреИрд╕реЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо рдХреЗ рд▓рд┐рдП рдореИрдВрдиреЗ test/**/*.spec.js рд╕рд╛рде рдХрд┐рдпрд╛ рдерд╛ рдХрд┐ exit-mocha рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдирд╛рдо рд╡рд╛рдЗрд▓реНрдбрдХрд╛рд░реНрдб рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдирд╣реАрдВ рдЦрд╛рддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛, рдпрд╣ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдЖрдкрдХреЗ рд▓рд┐рдП рдЗрд╕реЗ "рдзреНрд╡рдЬ" рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕рдВрднрд╡ рд╣реИ

@ vctr90 рдпрд╣ рдПрдХ рдорд╣рд╛рди рд╕рдорд╛рдзрд╛рди рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдЕрд╡рдзрд┐ рд╣реИ рдЬрд╣рд╛рдВ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдЕрд▓реНрдкрд╡рд┐рд░рд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рднреА рдкреВрд░реА рдмрд╛рдд рдХреЛрдб рдЧреЛрд▓реНрдл-рдПрдб рдиреАрдЪреЗ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ:

after('Exit mocha gracefully after finishing all tests execution', process.exit);

рдХреНрдпрд╛ рдХреЛрдИ рдореМрдХрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рджреЗрд╡ рдЗрд╕ рдмрд╛рдд рдкрд░ рдЭрдВрдХрд╛рд░ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдЪреЛрдЯ рдкрд╣реБрдВрдЪреЗрдЧреА (рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрд╣реБрдд рд╕реЗ рд▓реЛрдЧреЛрдВ рдХреА рдорджрдж рдХрд░реЗрдЧрд╛)ред

@ рдордЪрд┐рдиреАрдШреЛрд╕реНрдд рдореБрдЭреЗ 2 рдХрд╛рд░рдгреЛрдВ рд╕реЗ рдирдпрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкрд╕рдВрдж рд╣реИ:

  1. 'рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдиреЗ' рдХреЗ рдмрд╛рдж рд▓рдЧрднрдЧ рдХреЛрдИ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓реЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдиреЛрдб рдЯреАрд╕реАрдкреА рд╕рд░реНрд╡рд░ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рд╕реЗ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рдирд┐рдХрд╛рд╕ рдЯреНрд░рд┐рдЧрд░ рдирд╣реАрдВ рд╣реЛрдЧрд╛ред рдЗрд╕ рддрд░рд╣, рдпрд╣ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдиреБрд░реВрдк рд╣реИред
  2. рдпрджрд┐ рдиреЛрдб рдмрд╛рд╣рд░ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИ, рддреЛ рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдЕрднреА рднреА рдШрдЯрдирд╛рдУрдВ рдХрд╛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдиреЗ рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рд╣реИред рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рдЖрдЬрд╝рдорд╛рдиреЗ рдФрд░ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╣реИ рддрд╛рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдмрд╛рдж рдЪреАрдЬреЗрдВ рд╕рд╛рдл рд╣реЛ рдЬрд╛рдПрдВред рдпрд╣ рд╕реБрдЭрд╛рд╡ рднреА рджреЗ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрдореЛрд░реА рд▓реАрдХ рд╣реИред

рдЗрд╕рд▓рд┐рдП рдЬрдм рдореИрдВ рдЗрд╕рдореЗрдВ рднрд╛рдЧ рд▓реЗрддрд╛ рд╣реВрдВ, рддреЛ рдореЗрд░реЗ рд▓рд┐рдП рдпрд╣ рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдФрд░ рдЕрдкрдиреЗ рдХреЛрдб рдХреЛ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЛрддреНрд╕рд╛рд╣рди рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

рдЗрд╕ рдкрд░ рдЖрдкрдХрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг 'рдореИрдВ рд╕реНрдореГрддрд┐ рд▓реАрдХ рдХреА рдкрд░рд╡рд╛рд╣ рдирд╣реАрдВ рдХрд░рддрд╛' рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдпрд╛ 'рдпрд╣ рдореЗрд░реЗ рдЖрд╡реЗрджрди рдореЗрдВ рдлрд┐рдХреНрд╕рд┐рдВрдЧ рдХреЗ рд▓рд╛рдпрдХ рдирд╣реАрдВ рд╣реИ'ред рдпрджрд┐ рдЖрдк рдЗрд╕ рд╢реНрд░реЗрдгреА рдореЗрдВ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рд╣реИрдВ, рддреЛ mocha.opts рдФрд░ --exit рдЬреЛрдбрд╝рдирд╛ рд╣реИред

рдпрд╣ рд╕рд┐рд░реНрдл рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрдзрд┐рдХ рд╢реЛрд░ рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣реИ, рд╕рдВрдХреЗрдд рдирд╣реАрдВ: рдорд╣рддреНрд╡рдкреВрд░реНрдг рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдХрд┐рд╕реА рдХрд╛ рдРрдк рдмреЗрд╣рддрд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдореЛрдЪрд╛ рдЕрдВрдд рдореЗрдВ рд▓рдЯрдХрд╛ рд╣реБрдЖ рд╣реИред

рдпрджрд┐ рдореЛрдЪрд╛ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЗрд╕реЗ рд╕рдорд╛рдкреНрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдФрд░ рд╕рднреА after / afterEach рдХреЙрд▓) рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдП рд╣реИрдВред рд▓реЛрдЧреЛрдВ рдХреЛ рдпрд╣ рдмрддрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд┐ "рдЖрдкрдХреЗ рдХреГрддреНрд░рд┐рдо рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рд╣реМрд▓ рдХреГрддреНрд░рд┐рдо рд╣реИ" рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рдмрд╣реБрдордд (рдпрд╛ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕рднреНрдп рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ) рдХреЛ рднреА рд▓рд╛рдн рдирд╣реАрдВ рдкрд╣реБрдВрдЪрд╛рддрд╛ рд╣реИред

рдпрджрд┐ рд▓реЛрдЧ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд┐рдирд╛ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдбрд┐рдмрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдРрд╕рд╛ рдорд╛рдорд▓рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдк рдХреЗ рд▓рд┐рдП рдПрдХ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдмрд╛рдХреА рдХреЗ рд╕рднреА рд╕рдордп рдореЗрдВ, рдХреНрдпрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рднреА рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ (рдХрд┐рд╕ рдорд╛рддреНрд░рд╛ рдореЗрдВ рдХрд╣рдиреЗ рдХреЗ рд▓рд┐рдП) "рдЖрдк рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рд╣реМрд▓ рдореЗрдВ рд╣реИрдВ рдФрд░ рдПрдХ рдЕрд░рдм рд╕рдВрднрд╡ рдЪреАрдЬреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдЦреБрд▓реА рд╣реИ"?

рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдк 99% рд▓реЛрдЧреЛрдВ рдХреЛ рдмрддрд╛рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ рдЬреЛ рдЗрд╕ "рдмрд╕ --exit " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╢рд╛рдпрдж --exit рдХреЛ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рдЖрдкрдХреЗ рдкрд╛рд╕ рд╣реИ рдкреНрд░рджрд╛рди рдХрд░реЗрдВ ... рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ 99% рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдорд╛рдорд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рдХреЗ рд▓рд┐рдП рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЕрднреА рднреА рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ --tell-me-if-I-have-unclosed-stuff-in-my-testing-environment-and-that-is-actually-what-i-am-trying-to-find-out рдХрд╛ _option_ рджреЗ рд░рд╣рд╛ рд╣реИ)?

рдореЗрд░рд╛ рдорддрд▓рдм рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЗ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдП рдЧрдП рд╡рд┐рдХрд▓реНрдк, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд┐рддрдиреА рдмрд╛рд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓реЛрдЧ рднреА рдЗрд╕реЗ рдкрд╛рд░рд┐рдд рд╣реЛрдЧрд╛?

PS рдореИрдВ рдЕрднреА рдЗрд╕ рдкрд░ рдЖрдпрд╛ рд╣реВрдВ: https://stackoverflow.com/questions/54999115/where-to-destroy-knex-connectionред рдпрджрд┐ рдЖрдк рджреВрд╕рд░реЗ рдЙрддреНрддрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдореЛрдЪрд╛ рдореЗрдВ рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╕реАрдзреЗ рддреМрд░ рдкрд░ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ (рдЬреЛ рдореИрдВ рдирд╣реАрдВ рд╣реВрдВ, рдФрд░ рдореИрдВ рдХрд╕рдо рдЦрд╛рддрд╛ рд╣реВрдВ, рдореИрдВ рдЙрдиреНрд╣реЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реВрдВ: рдореИрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдЕрдкрдиреА рдЖрдЦрд┐рд░реА рдкреЛрд╕реНрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж рднрд╛рдЧреНрдп рд╕реЗ рдорд┐рд▓рд╛) рдЧреИрд░-рдкрд░реАрдХреНрд╖рдг рдХреЛрдб (рдЗрд╕ "рд╕реБрд╡рд┐рдзрд╛" рдиреЗ рдЙрдиреНрд╣реЗрдВ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ knex.destroy() рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕рдордЭреА)ред

рд╕рд╛рд░рд╛рдВрд╢ рд╕рдВрд╕реНрдХрд░рдг:

рдЕрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрддрд┐: рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЖрдорддреМрд░ рдкрд░ knex.destroy () рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдпрд╣ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рд╕реНрд╡рдпрдВ рдХрд╣ рд░рд╣рд╛ рд╣реИ (рдЬреЛрд░) рджреНрд╡рд╛рд░рд╛ рдирд┐рд╣рд┐рдд рд╣реИ:

рдЕрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрддрд┐: рдЙрджреНрдзрд░рдг рдбреЙрдХреНрд╕

рднреНрд░рдорд┐рдд рд╡реНрдпрдХреНрддрд┐: рдЕрдЧрд░ рдореИрдВ knex.destroy () рдирд╣реАрдВ рдХрд╣рддрд╛ рд╣реВрдВ рддреЛ рдореЗрд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рдЯрдХ рдЬрд╛рдПрдЧреАред рддреЛ рдЗрд╕рдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ knex.destroy () рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ

рдЕрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрддрд┐: рдЖрд╣, рдЖрдкрдиреЗ рдХреЗрд╡рд▓ рдХрд╣реАрдВ рдФрд░ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП рд╣реИред рдирд┐рдпрдорд┐рдд рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХрдиреЗрдХреНрд╢рди рдкреВрд▓ рдХреЛ рдлрд╛рдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдореЛрдЪрд╛ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ рдлрд╛рдбрд╝ рд╣реБрдХ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, futurestud.io/tutorials/тАж рджреЗрдЦреЗрдВ

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

рдЗрд╕рд▓рд┐рдП, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЬреЛ рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдХреЗрд╡рд▓ рджрд╛рд░реНрд╢рдирд┐рдХ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╣реЛрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рди рд╣реА рдпрд╣ рд╣реИ рдХрд┐ рдХреБрдЫ рд╢реЛрд░ рдЙрдкрдпреЛрдЧреА рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрд╕реНрдкрд╖реНрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВ ... рдпрд╣ рд╡реНрдпрд╡рд╣рд╛рд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдиреБрдХрд╕рд╛рди рдкрд╣реБрдВрдЪрд╛ рд░рд╣рд╛ рд╣реИ , рдФрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рдордп рдмрд░реНрдмрд╛рдж рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдкрд╡рдирдЪрдХреНрдХрд┐рдпреЛрдВ рдкрд░ред

рдореБрдЭреЗ рдХреНрд╖рдорд╛ рдХрд░реЗрдВ, рдореИрдВрдиреЗ рдПрдХ рдИрдорд╛рдирджрд╛рд░ рдкреНрд░рд╢реНрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдердХреЗ рд╣реБрдП рдмрд┐рдВрджреБ рдХреЛ рдЧрд▓рдд рд╕рдордЭрд╛ред рдореБрдЭреЗ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХрд╛ рдЕрдлрд╕реЛрд╕ рд╣реИред рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЗрд╕ рдереНрд░реЗрдб рдХреЛ рд▓реЙрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

"mocha --reporter mocha-allure-reporter ./tests/controllers --exit" рдиреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд┐рдпрд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ --exit рдПрдХ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд╕рдорд╛рдзрд╛рди рд╣реИред рдореИрдВ рдЕрдкрдиреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рд╕рдВрд╕реНрдХрд░рдг 5.2.0 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВред

рдХреНрдпрд╛ рдореЛрдЪрд╛ " рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ " рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп --exit рдЭрдВрдбреЗ рдХреЗ рдмрд░рд╛рдмрд░ рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ?

рдореБрдЭреЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ / рдиреЛрдХреНрд╕рд┐рдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рд▓реЗрдЦрд┐рдд рд╡рд┐рдХрд▓реНрдк рдирд╣реАрдВ рджрд┐рдЦрддрд╛ рд╣реИ, рдФрд░ рди рд╣реА NodeJin API рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдзреНрд╡рдЬ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХрд╛ред

рдЕрдиреНрдп рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдкреИрдЯрд░реНрди рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рдХреЛрд╢рд┐рд╢ рдХреА:

const mocha = new Mocha({
    exit: true,
});

рд▓реЗрдХрд┐рди рд╡рд╛рдВрдЫрд┐рдд рдкреНрд░рднрд╛рд╡ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рдерд╛ред

Https://github.com/mochajs/mocha/blob/master/lib/mocha.js рдХрд╛ рд╕рд░рд╕рд░реА рдирд┐рд░реАрдХреНрд╖рдг рдпрд╣ рдкреНрд░рддреАрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рд╡рд┐рдХрд▓реНрдк рдХреЛ рди рдХреЗрд╡рд▓ рджрд╕реНрддрд╛рд╡реЗрдЬ рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдмрд▓реНрдХрд┐ рд╕реНрд░реЛрдд рд╕реЗ рднреА рдЬреЛрдбрд╝рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред

рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЙрдкрдпреЛрдЧ --exit ), рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╖рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВ рдЕрдм рдЦреБрдж рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдиреЗрддреНрд░рд╣реАрди рдЙрдиреНрдирдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рдореЗрд░реА package.json рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ

"scripts": { "test": "istanbul cover node_modules/mocha/bin/_mocha --exit test/Testcases/ " } рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдПрдХ рддреНрд╡рд░рд┐рдд рд╕рдорд╛рдзрд╛рди рдкреНрд░рджрд╛рди рдХрд░рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛ (рдЙрдкрдпреЛрдЧ --exit ), рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЙрдиреНрд╣реЛрдВрдиреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рджреЛрд╖рдкреВрд░реНрдг рдкрд░реАрдХреНрд╖рдг рдЦреЛрдЬрдиреЗ рдХрд╛ рдореБрдЦреНрдп рдореБрджреНрджрд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ред рдореИрдВ рдЕрдм рдЦреБрдж рдЗрд╕рдХреЗ рд╕рд╛рде рд╕рдВрдШрд░реНрд╖ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдкреНрд░рдореБрдЦ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЛ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╕рдордп, рдореИрдВ рд░рд┐рд▓реАрдЬ рдиреЛрдЯреНрд╕ рдХреЛ рдкрдврд╝рдирд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдиреЗрддреНрд░рд╣реАрди рдЙрдиреНрдирдпрди рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реВрдВ

рдЖрдк рдЗрд╕реЗ рдХреИрд╕реЗ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ? рдпрд╣ рдореЗрд░реА package.json рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ

"scripts": { "test": "istanbul cover node_modules/mocha/bin/_mocha --exit test/Testcases/ " } рдФрд░ рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ

рдПрдХ рд╣реА рдореБрджреНрджрд╛ рдерд╛ рдФрд░ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЕрдХреЗрд▓рд╛ рдирд╣реАрдВ рд╣реВрдВред рдореБрдЭреЗ рдмрд╕ рдЕрдВрдд рдореЗрдВ рдЖрдирд╛ - рдЬрд╛рдирд╛ рдкрдбрд╝рд╛ред
рдпрд╣ рдХрд╛рдо рдирд╣реАрдВ рдХрд┐рдпрд╛:
istanbul рдХрд╡рд░ ред/node_modules/mocha/bin/_mocha --exit - test / .test.jрдЗрд╕рдиреЗ рдореБрдЭреЗ рдХрд╛рдо рдХрд┐рдпрд╛:istanbul рдХрд╡рд░ ред/node_modules/mocha/bin/_mocha - рдкрд░реАрдХреНрд╖рдг / .est.js --exit

exit Mocha рдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рд░реВрдк рд╕реЗ рдЪрд▓рд╛рдиреЗ рдкрд░ рдХреБрдЫ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, fwiwред рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕реАрдПрд▓рдЖрдИ рд░реИрдкрд░ рджреНрд╡рд╛рд░рд╛ рдмрд▓рдкреВрд░реНрд╡рдХ рдмрд╛рд╣рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рди рдХрд┐ рдореЛрдЪрд╛-рдП-рд▓рд╛рдЗрдмреНрд░реЗрд░реА рджреНрд╡рд╛рд░рд╛ред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

enigmatic00 picture enigmatic00  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

CADBOT picture CADBOT  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

adamhooper picture adamhooper  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

smithamax picture smithamax  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

wzup picture wzup  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ