Mocha: рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдСрдкреНрдЯ-рдЖрдЙрдЯ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 20 рдЕрдЧре░ 2013  ┬╖  43рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mochajs/mocha

@isaacs рд╢рд┐рдХрд╛рдпрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг node -рдмрд▓ рдирд╣реАрдВ рд╣реИрдВред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╢рд┐рдХрд╛рдпрдд рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡рд╣ рдПрдХ рдореБрдЦрд░ рдЕрд▓реНрдкрд╕рдВрдЦреНрдпрдХ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░рдирд╛ рд╕рдВрднрд╡рддрдГ рдореВрд▓реНрдпрд╡рд╛рди рд╣реЛрдЧрд╛ред

рдпрд╣рд╛рдБ рдореИрдВ рдХреНрдпрд╛ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдБ: рдЗрд╕рдХреЗ рдмрдЬрд╛рдп рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ describe , it , рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг, рдЖрдк рдРрд╕рд╛ рдХрд░реЗрдВрдЧреЗред

var mochaBDD = require("mocha/bdd");
var describe = mochaBDD.describe;
var it = mochaBDD.it;

// ok, stupid boilerplate is over but at least I don't have to use a test runner, woohoo!

рд╡реИрдХрд▓реНрдкрд┐рдХ рд░реВрдк рд╕реЗ рдпрд╣ рд╕рд┐рд░реНрдл рд╣реЛ рд╕рдХрддрд╛ рд╣реИ

require("mocha/bdd");

рдФрд░ рдЬреЛ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ред

рддреБрдо рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?

feature help wanted

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

+1 рдХреЗ рд▓рд┐рдП:
import { describe, before, it } from 'mocha';

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

рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рдпрд╣ рд╕рд┐рд░реНрдл require('mocha') рд╣реЛрдиреЗ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрдерд╛рди рдкрд░ рдЕрдкрдиреА рдмрдХрд╡рд╛рд╕ рдбрдВрдк рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЪреАрдЬреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕реНрдерд┐рддрд┐ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рд╣реИ, рд▓реЗрдХрд┐рди рд╣рд░ рдЪреАрдЬ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╛рдкрд╛рд░ рд╣реИрдВред рдореИрдВ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдЦреБрд╢ рд╣реВрдБ:

var Mocha = require('mocha');
var mocha = new Mocha(options);
mocha.describe('blah blah', function....

рдХреЛрдИ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рдПрдХ рдХреНрд▓реАрдирд░ рддрд░реАрдХрд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕реЗ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХрд╛ рдПрдХ _ton_ рд╣реЛрдЧрд╛ рдЬреЛ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рд╣рд░ рдмрд╛рд░ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдо рдЙрди рд╕реАрдПрд▓рдЖрдИ-рдИрд╢ рдПрдкреАрдЖрдИ рдХреЛ рдХрдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдареАрдХ рд╣реЛрдЧрд╛ред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЕрдЧрд░ рд╡рд╣рд╛рдБ ARBV рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХрд┐ lib / cli.js рдерд╛, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдЧрд╛, рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ CLI рдХреЗ рдмрд┐рдирд╛ рдпрдереЛрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЖрд╕рд╛рди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЛрдИ рднреА рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреБрдЫ рдХрд┐рдирд╛рд░реЗ рдорд╛рдорд▓реЛрдВ рд╕реЗ рдкрд░реЗ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред

@visionmedia рдЬреЛ рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рд▓рдЧрддрд╛ рд╣реИред рдЬрд┐рд╕ рдХрд╛рд░рдг рд╕реЗ рдореИрдВрдиреЗ require("mocha/bdd") рдпрд╛ рдЗрд╕реА рддрд░рд╣ рдХрд╛ рд╕реБрдЭрд╛рд╡ рджрд┐рдпрд╛ рд╣реИ рдХрд┐ рдореМрдЬреВрджрд╛ рдореЛрдЪрд╛ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рд╣рд╛рдБ, рддреБрдореНрд╣рд╛рд░рд╛ рд╢рд╛рдпрдж рдмреЗрд╣рддрд░ рд╣реИред (рдЖрдк рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдпрд╛ рдХрдИ рдмрд╛рд░ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдПред рдареАрдХ рд╣реИ, рдпрд╣ рд╕рдВрднрд╡рддрдГ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдХрд╛рд░рдг рдЯреВрдЯ рдЬрд╛рдПрдЧрд╛ред ('uncaughtException') рдЙрдкрдпреЛрдЧ, рд▓реЗрдХрд┐рди рдЖрдк рджреЗрдЦреЗрдВ рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред

рдореИрдВ рдЗрд╕ рдПрдХ рджрд┐рди рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВред

рдпрд╣ рдПрдХ рдорд╣рд╛рди рдЙрджрд╛рд╣рд░рдг рд╣реИ рдЬрд╣рд╛рдВ рд╡рд┐рдирд╛рд╢рдХрд╛рд░реА рдЕрд╕рд╛рдЗрдирдореЗрдВрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдереЛрдбрд╝рд╛ рднрд╡рд┐рд╖реНрдп рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдПрдХ рд▓рдВрдмрд╛ рд░рд╛рд╕реНрддрд╛ рддрдп рдХрд░рддрд╛ рд╣реИред
https://developer.mozilla.org/en-US/docs/Web/JavaScript/New_in_JavaScript/1.7#Destructuring_assignment_% 28Merge_into_own_page.2.adection% 29

var [describe,it,beforeEach,afterEach] = new require("mocha")(options);

рдмрд╕ рдЗрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреЛрдб рд╕рджреНрднрд╛рд╡ рд╕рдорд░реНрдерди рдерд╛ред

рдХреНрдпрд╛ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рд╣реИ

node test/a-mocha-test.js

рдФрд░ рдХреНрдпрд╛ рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛ рд╣реИ?

@ рд╣реЗрд▓реЗрдирдЬрд╛рдорд┐рди рдпреБрдк

рдЕрдкрдиреЗ рдЖрдк рдХреЛ рдиреЛрдбрд╕реНрдкреЗрд╕ рдкрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╕рдорд╕реНрдпрд╛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рдХрд░рд╛ рд░рд╣реА рдереА, рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛ рд░рд╣реА рдереА рдХрд┐ рдХреИрд╕реЗ / рдХрдм рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ - рд╣рдореЗрдВ рдЕрднреА рднреА рджреЛ-рдкрд╛рд╕ рдкрд░рд┐рднрд╛рд╖рд┐рдд / рд░рди рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

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

(1) рд╢рд╛рдпрдж рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╣реИ, рдЬреЛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддрд╛ рд╣реИ:

var run = require('mocha/required');

describe('blah blah' , function() {
// ..
});

run();

рдЬрдм рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ mocha рд░реИрдкрд░ рдХреЗ рдмрд┐рдирд╛ рдЪрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рддреЛ node ./node_modules/.bin/_mocha test/a-mocha-test.js рдХрд░рдиреЗ рдкрд░ рдмрд╣реБрдд рдХреБрдЫ рдЬреЛрдбрд╝рдирд╛ рдкреНрд░рддреАрдд рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред

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

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

рдХреНрдпрд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ? рдореБрдЭреЗ рдЕрдм рднреА рдЗрд╕рдореЗрдВ рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдкреА рд╣реИред рд╕рд┐рд░реНрдл node test.js рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдирд╣реАрдВ рд╣реЛрдирд╛ рдореБрдЦреНрдп рдХрд╛рд░рдгреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдерд╛, рдЬреЛ рдореЗрд░реЗ рдФрд░ рдореИрдкрдмреЙрдХреНрд╕ рдХреЗ рдореЗрд░реЗ рд╕рд╣рдпреЛрдЧрд┐рдпреЛрдВ рдиреЗ рдореЛрдЪрд╛ рд╕реЗ рдЯреЗрдк рдФрд░ рдЯреИрдк рдЬреИрд╕реЗ рд╣рд╛рд░реНрдиреЗрд╕ рд╕реЗ рджреВрд░ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдореИрдВ рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рд░рд╣рдирд╛ рдкрд╕рдВрдж рдХрд░реВрдВрдЧрд╛, рд▓реЗрдХрд┐рди рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ "рдиреЛрдб-рдХреНрд╖рдорддрд╛" рддрд░реНрдХ рдХреБрдЫ рд╕рдореНрдореЛрд╣рдХ рд╣реИред

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: "рдиреЛрдб-рдХреНрд╖рдорддрд╛" рддрд░реНрдХ рдпрд╣рд╛рдБ @tmcw рджреНрд╡рд╛рд░рд╛ рд╡рд┐рд╕реНрддреГрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

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

var describe = require('mocha').describe;
var before = require('mocha').before;
var it = require('mocha').it;

рдФрд░ рдпрд╣ ES6 рдХреЗ рд╕рд╛рде рдЕрдЪреНрдЫреЗ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ:

import { describe, before, it } from 'mocha';

рдореБрджреНрджрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ mocha рдмрд╛рдЗрдирд░реА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред

рдУрд╣, рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред :) рдпрджрд┐ рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдХреНрд╖рдорддрд╛ рдХреА рдкреЗрд╢рдХрд╢ рдХрд░рддреЗ рд╣реИрдВ рдЬрдм рдореЛрдЪрд╛ рдмрд╛рдЗрдирд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рднрд╛рдЧ рдЧрдпрд╛, рддреЛ рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдиреЛрдб рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред рдЗрд╕ рдкрд░ рдЧреМрд░ рдХрд░реЗрдВрдЧреЗред рдзрдиреНрдпрд╡рд╛рдж!

рдЕрдм рдЙрд╕ рдиреЛрдб рдореЗрдВ рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ рд╣реБрдХ рд╣реИ, рдпрд╣ рдХрд╛рдлреА рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд▓рдЧрддрд╛ рд╣реИред

рдХреБрдЫ рдРрд╕рд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП

var { describe, it } = require('mocha/auto')

рд╣рд╛рдБред рдЬреИрд╕рд╛ рдХрд┐ рдЯреАрдЬреЗ рдиреЗ рдХрд╣рд╛, рд╕рдорд╕реНрдпрд╛ рддрдм рднреА рд╣реИ рдЬрдм рд╣рдо рд╕рдм рдХреБрдЫ "рдиреЛрдб-рд╕рдХреНрд╖рдо" рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдереЗ, рдЗрд╕реЗ рдЙрдкрдпреЛрдЧреА рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдзрд┐рдХ рдмреЙрдпрд▓рд░рдкреНрд▓реЗрдЯ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИред

рд╣рд╛рд▓рд╛рдБрдХрд┐...

beforeExit рдкрд░ рд╢реАрд░реНрд╖рдХреЛрдВ рдХреЗ рд▓рд┐рдП @glenjamin рдзрдиреНрдпрд╡рд╛рджред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕рдХрд╛ рд▓рд╛рдн рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЛрдЧ рд╢рд╛рдпрдж рдЕрднреА рднреА рд╢рд┐рдХрд╛рдпрдд рдХрд░реЗрдВрдЧреЗ рдпрд╣ рдмрд╣реБрдд "рдЬрд╛рджреВ" рд╣реИ ...

рдореИрдВрдиреЗ 3cdd4a04c48193cceac6af7db72af06d380014a9 рдкрд░ рдПрдХ рдкреНрд░реВрдл-рдСрдл-рдХреЙрдиреНрд╕реЗрдкреНрдЯ рдЬреЛрдбрд╝рд╛ рд╣реИ

рд╡реИрд╕реЗ рднреА, рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред Growl рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рдХреЛрдИ рд╕рдорд░реНрдерди рдирд╣реАрдВ рд╣реИ, mocha.opts рдпрд╛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреНрдп process -рд╕рд░реНрдЧрд┐рдд рд╕рд╛рдорд╛рди рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╡рд╛рд▓реЗ рдХреЛрдб рдХреЗ рд▓рд┐рдПред рд╣рдореЗрдВ bin/_mocha рд╕реЗ рдХреБрдЫ рдХреЛрдб рдирд┐рдХрд╛рд▓рдиреЗ рдЪрд╛рд╣рд┐рдП рдФрд░ рдЗрд╕реЗ рдпрд╣рд╛рдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рддрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рддрд░реНрдХ рд╕рдорд░реНрдерди рднреА рд╣реЛ рд╕рдХрддрд╛ рдерд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП:

$ node test/my-test.js --reporter=dot

рдЕрдЧрд░ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рдХреЛрдИ рд╕реБрдЭрд╛рд╡ рд╣реИ, рддреЛ рдиреАрдВрдмреВ рдХрд╛ рдкрддрд╛ рд╣реИ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕реАрдПрд▓рдЖрдИ рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░реЛрдВ рдореЗрдВ bin/_mocha рдХреБрдЫ рд╕рд╛рдорд╛рди рдирд┐рдХрд╛рд▓рдирд╛ рдмрд╣реБрдд рд╣реА рд╕рдордЭрджрд╛рд░реА рд╡рд╛рд▓рд╛ рд╣реЛрдЧрд╛ред

рдореБрдЭреЗ рдЕрднреА рднреА рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдЙрдкрдпреЛрдЧреА рдЬреЛрдбрд╝ рд╣реИ?

рдХреНрдпрд╛ рдирд┐рдореНрди рдореЗрдВ рд╕реЗ рдХрд┐рд╕реА рдХреЗ рдмреАрдЪ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЕрдВрддрд░ рд╣реИ?

node test/test.js
./node_modules/.bin/mocha test/test.js
PATH=./node_modules/.bin:$PATH mocha test/test.js
npm test -- test/test.js

рдореБрдЭреЗ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдореЛрдЪрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ node рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡реЗ рд▓реЛрдЧ рд╣реИрдВ рдЬреЛ рдореЛрдЪрд╛ рдкрд╕рдВрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рдмрд╣рд╛рдирд╛ рдвреВрдВрдв рд░рд╣реЗ рд╣реИрдВ! рдореЛрдЪрд╛ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реИ: рдореБрд╕реНрдХрд╛рди:

рдореБрдЭреЗ рднреАред рдореИрдВ jspm рдФрд░ SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдФрд░ рдореЗрд░реЗ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ import рдореЛрдЪрд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдирд╣реАрдВ рдЪрд▓ рд░рд╣рд╛ рд╣реИред

import { describe, before, it } from 'mocha';

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ред

@glenjamin рдЗрд╕реЗ рд╕рд┐рд░реНрдл рд╣реЛрдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИред рдореЛрдЪрд╛ рдХреЗ рдкрд╛рд╕ рдХреЛрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдПрдкреАрдЖрдИ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рджреБрд╖реНрдкрд░рд┐рдгрд╛рдо рдиреЛрдб-рд╕рдХреНрд╖рдо рдкрд░реАрдХреНрд╖рдг рд╣реИред рдЬрд┐рд╕ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдпрд╣ рдЪрд▓рддрд╛ рд╣реИ рд╡рд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░реЗрдЧрд╛, рдЪрд╛рд╣реЗ рд╡рд╣ рдПрдХ рдмреНрд░рд╛рдЙрдЬрд╝рд░, рд╕реАрдПрд▓рдЖрдИ, рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХреБрдЫ рдФрд░ рд╣реЛред Mocha.app, рдХреЛрдИ рднреА? :)

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЗрдЪреНрдЫреБрдХ рд╣реИрдВ!

+1 рдХреЗ рд▓рд┐рдП:
import { describe, before, it } from 'mocha';

рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ const {describe, it} = require('mocha') , рд▓реЗрдХрд┐рди рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ

рдпрджрд┐ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░ рд╕рдорд░реНрдерди рд╕реЗ рдЪрд┐рдВрддрд┐рдд рд╣реИрдВ, рддреЛ рд╣рдо рд╣рдореЗрд╢рд╛ const {describe, it} = window.mocha ред рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЪреА рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдареАрдХ рд╣реИ, const {describe, it} = window рднреА, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИред

рдпрд╣ рдореЛрдЪрд╛ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд▓рд┐рдП рдЗрддрдирд╛ рдореМрд▓рд┐рдХ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдмрдВрдбрд▓ рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╡рд╕реНрддреБ рдХрд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИред

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

mocha рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛; рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

рд╣рдо рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ (рдФрд░ рдЪрд╛рд╣рд┐рдП) рдХреЗ рд▓рд┐рдП рдЧреЛрд▓реА рдорд╛рд░ рдЖрд╕рд╛рдиреА рд╕реЗ node рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдкреНрд░рджреВрд╖рдг рдХреЗ рдмрд┐рдирд╛ рдореЛрдЪрд╛ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИред рдпрд╣ рдореБрджреНрджрд╛ рдпрд╣реА рд╣реИред

рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдпрд╣ рдЯреЗрдХреНрд╕рд╛рд╕ рдХреЗ рдЖрдХрд╛рд░ рдХреА рдПрдХ рдЫреЛрдЯреА рдЧреЗрдВрдж рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрд┐рд╕реА рдХреЗ рдкрд╛рд╕ рд╕рдордп рдпрд╛ рдКрд░реНрдЬрд╛ рдирд╣реАрдВ рд╣реИ, рдЬреЛ рдЗрд╕ рдореБрджреНрджреЗ рдХреА рдЙрдореНрд░ рддрдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП ...

mocha рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдЧрд╛; рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдХрднреА рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛ред

рдЬрдмрдХрд┐ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдХреИрд╕реЗ рд╕рдВрд░рдЪрд┐рдд рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореБрдЭреЗ рдХреБрдЫ рднреА рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХрд▓ рдбрд┐рдЬрд╝рд╛рдЗрди рд╡рд┐рдХрд▓реНрдк рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕реНрд░реЛрдд рд╣реИред

рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ!

рдореИрдВрдиреЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдХреЛрдб рдкрд░ рджреВрд╕рд░рд╛ рдирдЬрд╝рд░ рдбрд╛рд▓рд╛, рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ (рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛) рдХрд┐ рдореИрдВрдиреЗ рдкрд┐рдЫрд▓реА рдмрд╛рд░ рдХреНрдпрд╛ рдЧрд▓рдд рдХрд┐рдпрд╛ рдерд╛ рдореИрдВрдиреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЗ рдЖрд╕рдкрд╛рд╕ рд╣реИрдХ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдереА, рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ node test/someFile.js рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдпреЛрдЧреНрдп рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред

  • рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╕реЗ рдмрдЪрдирд╛

    • рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдПрдХ рд╕реЗрд╡рд░ рдореЗрдЬрд░ рдореЗрдВ рд╣рдо рдореЛрдмреНрдХреН рдЙрдкрдпреЛрдЧ рдХрд╛ рднрд╛рд░реА рдмрд╣реБрдордд рдирд╣реАрдВ рддреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рдЯреАрдо рд╕рднреА рдЕрдкрдиреЗ рджрд┐рди рдХреА рдиреМрдХрд░реА рдЫреЛрдбрд╝ рд╕рдХрддреА рд╣реИ, рдлрд┐рд░ рдХрднреА рдирд╣реАрдВ рд╕реЛ рд╕рдХрддреА, рдЕрдкрдиреЗ рдмрд╛рдХреА рдХрд░рд┐рдпрд░ рдХреЛ рдЙрд╕ рдкрд░ рдмрд┐рддрд╛рдПрдЧреА рдФрд░ рдЕрднреА рднреА рд╢рд╛рдмреНрджрд┐рдХ рд░реВрдк рд╕реЗ рд╕рдорд░реНрдерди рдЕрдиреБрд░реЛрдзреЛрдВ рдХреА рдЕрдХрд▓реНрдкрдиреАрдп рдмрд╛рдврд╝ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдирд╡-рдШрдВрдЯреЗ рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП: рдпрд╣ рдПрдХ рдзреНрд╡рдЬ рдХреЗ рдкреАрдЫреЗ рд╣реЛрдЧрд╛, рд╣рдореЗрд╢рд╛ рдХреЗ рд▓рд┐рдП ред

    • рд╡рд░реНрддрдорд╛рди рдореЗрдВ, BDD рдФрд░ TDD рдЗрдВрдЯрд░рдлреЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЖрд╡рд░рдг рд╣реИрдВ: рджреЛрдиреЛрдВ рдХреЛ require("mocha").it et al рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдФрд░ рдХреЛрдИ рдЕрдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ)ред (рдиреЛрдЯ: рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдпрд╣ рдирд╣реАрдВ рдЯреВрдЯрддрд╛ рд╣реИ рдЬрдм рдЕрдиреНрдп рдЗрдВрдЯрд░рдлреЗрд╕ рдЪреБрдиреЗ рдЬрд╛рддреЗ рд╣реИрдВ, рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдореЗрдВ рдПрдХ рдмрдЧ рд╣реЛ, рдЬрд╣рд╛рдВ рдЕрдзрд┐рдХрд╛рдВрд╢ рдкрд░рд┐рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рдпрд╣ рдмреАрдбреАрдбреА рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдЧрд╛ рднрд▓реЗ рд╣реА рдПрдХ рдФрд░ рдЪрдпрдирд┐рдд рд╣реЛред # 2207) рдореИрдВ рдЗрд╕рд╕реЗ рджреВрд░ рдЬрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВред

    • рдХрд╕реНрдЯрдо (рдерд░реНрдб-рдкрд╛рд░реНрдЯреА) рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдПрдХреНрд╕рдкреЛрд░реНрдЯ рд╕реНрдХреАрдо рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрдм рддрдХ рд╡реЗ global рд╣рд╛рд░реНрдбрдХреЛрдбрд┐рдВрдЧ рдХреЗ рдмрдЬрд╛рдп рдЙрддреНрд╕рд░реНрдЬрд┐рдд рд╕рдВрджрд░реНрдн рдСрдмреНрдЬреЗрдХреНрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ)ред

    • рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдп рдХреЛ Mocha (рдХреНрдпрд╛ require("mocha") рдирд┐рд░реНрдпрд╛рдд) рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

    • рдпрджрд┐ рд╣рдо рдХрднреА рдЙрд╕ рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ BDD рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╣рдореЗрд╢рд╛ рд╕реЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдпрд╣ BDD рдФрд░ TDD рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ Mocha рджреВрд╕рд░реЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рдЪреБрдирд╛ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдореБрд╢реНрдХрд┐рд▓ рдмрдирд╛ рд░рд╣реЗрдЧрд╛ред

    • рдЬрдм рддрдХ рдЖрдк require("mocha/tddInterface").test рдпрд╛ require("mocha/interface/bdd").it ( "mocha/lib/interfaces/<interface name>" рд╕рд╛рде рднреНрд░рдорд┐рдд рди рд╣реЛрдВ) рдЬрдм рддрдХ рдЖрдк Mocha рдХреА UI рдХреЛ TDD рдкрд░ рд╕реЗрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдФрд░ рд╡реИрд╕реЗ рднреА BDD рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдпрд╛ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд░рд╣рддреЗ рд╣реИрдВ)ред

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

  • рдиреЛрдб рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдпрд╛рдиреА рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдХреНрд╖рдо рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ node test/someFile.js рдХреЗ рдмрдЬрд╛рдп mocha test/someFile.js

    • рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рд╕рд░реНрд╡рд╡реНрдпрд╛рдкреА рд╣реИ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рд╣рдо рдРрд╕реЗ рд▓реЛрдЧреЛрдВ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ var Mocha = require("mocha"); var mocha = new Mocha() рдЖрджрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ (рдЕрд░реНрдерд╛рдд "рдкреНрд░реЛрдЧреНрд░рд╛рдореЗрдЯрд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕")ред рд╣рдореЗрдВ рдпрд╛ рддреЛ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдореЛрдЪрд╛ "рдж рдиреЛрдб-рд╕рдХреНрд╖рдо рддрд░реАрдХрд╛" рдХреЛ рдЪрд▓рд╛рдиреЗ рд╕реЗ рдмрдЪрдирд╛ рд╣реЛрдЧрд╛ рдпрд╛ рдлрд┐рд░ (рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЖрд╕рд╛рди рд╣реИ, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рд╕реЗ рдСрдкреНрдЯ-рдЗрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ) рдХрд┐ рдиреЛрдб-рдХреНрд╖рдорддрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдЖрдпрд╛рдд рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬреИрд╕реЗ require("mocha/nodeable").it ( .describe рдЖрджрд┐)ред require("mocha") рдкрд░ рдЧреБрд▓реНрд▓рдХ рдХреА рдмрдЬрд╛рдп рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЖрдпрд╛рдд рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдк рд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ рдФрд░ рдореЗрд░реА рдЗрдЪреНрдЫрд╛ рдХреЗ рд╕рд╛рде рдлрд┐рдЯ рд╣реЛрдЧрд╛ (рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╕реЗ рдкрд░рд╣реЗрдЬ рдореЗрдВ рдФрдЪрд┐рддреНрдп рдФрд░ рдФрдЪрд┐рддреНрдп) Mocha рд╡рд╕реНрддреБ рдкрд░ рдирд┐рд░реНрдпрд╛рдд рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рджреВрд░ рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдПред require("mocha") рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдпрд╛рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ред

    • node test/someFile.js рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдкрд░реНрдпрд╛рдкреНрдд рдирд╣реАрдВ рд╣реИ рдХрд┐ someFile.js рдореЛрдЪрд╛ рдХреЗ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдЖрдпрд╛рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛ: рдореЛрдЪрд╛ рдХреЛ рддрддреНрдХрд╛рд▓ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИ, рдФрд░ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдмрд╛рдж рд╕рднреА рдХреЛ рдореЛрдЪрд╛ рдХреЛ рдЪрд▓рд╛рдирд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, require("mocha/nodeable") рдХреЛ рдореЛрдЪрд╛ рдХреЛ рддреБрд░рдВрдд рд╣реА рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рд╕рд╛рде рд╣реА рд╕рд╛рде рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП ... рдФрд░ рдлрд┐рд░ рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓ рдХреЗ рдЪрд▓рдиреЗ рдХреЗ рдмрд╛рдж рдЙрд╕реЗ рдореЛрдЪрд╛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред

    • рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ process.on("beforeExit" рдореЗрдВ рдореЛрдЪрд╛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛, рдмрд╢рд░реНрддреЗ рдХрд┐ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХрд┐рд╕реА рднреА рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╢реБрд░реВ рди рдХрд░реЗред

    • рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдФрд░ рддрд░реАрдХрд╛ process.nextTick рдпрд╛ setImmediate рдпрд╛ setTimeout(..., 0 /* or some small number */) рдореЗрдВ рдореЛрдЪрд╛ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред

    • рдЯреЗрд╕реНрдЯ рдЬреЛ --delay рд╕рд╛рде рдЕрдкрдирд╛ рд╕рд╛рдорд╛рди рд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЕрддреБрд▓реНрдпрдХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ run() рдЪрд▓рддреЗ рд╣реИрдВ, рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛрдЧреАред рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдХрдм рдЪрд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ - run() - рдФрд░ рдпрд╣ рдЬрд╛рдирдиреЗ рдХреЗ рд▓рд┐рдП рднреА рдирд╣реАрдВ рдХрд┐ рдХреНрдпрд╛ --delay (рдиреАрдЪреЗ рджреЗрдЦреЗрдВ, рдпрд╛ require("mocha/nodeable/delayed") ), рдмрд▓реНрдХрд┐ рдЗрд╕рд▓рд┐рдП run() рдХреЗрд╡рд▓ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреИрд╕рд╛ рдХрд┐ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред рддрд░реНрдХ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрди рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрдард┐рди рд╣реИ рдФрд░ рд╣рдореЗрдВ рдЗрд╕реЗ рдареАрдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА рддрд╛рдХрд┐ run() рдХреЛ рд╣рд░ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╡реИрд╕реЗ рднреА рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдП, рдЬрд┐рд╕рдореЗрдВ "рдиреЛрдб-рд╕рдХреНрд╖рдо" рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛ред рдЗрд╕реЗ рдареАрдХ рдХрд░рдирд╛ред рдЕрдиреНрдпрдерд╛ ... рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореБрдЭреЗ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИред

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

    • рдпрджрд┐ рд╣рдо рдиреЛрдб рд╕реЗ рдЧреБрдЬрд░рддреЗ рд╕рдордп, рдпрд╛ mocha.opts рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдореЛрдЪрд╛ рдЭрдВрдбреЗ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ CLI рдХреЗ рдЯреБрдХрдбрд╝реЛрдВ рдХреЛ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓рд░ рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛, рдпрд╛ рдРрд╕рд╛ рдХреБрдЫ рднреА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ рдореЛрдЪрд╛ рдХреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд┐рдП рдиреЛрдб-рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рд╡реНрдпрд╡рд╣рд╛рд░ред

  • рдЗрди рджреЛ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рдмрд╛рдзрд╛рдУрдВ рдХреЛ рдорд┐рд▓рд╛рдХрд░, рдореИрдВ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ (рдФрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ) :

    • рдЧреНрд▓реЛрдмрд▓реНрд╕ рд╕реЗ рдмрдЪрдирд╛

    • рдЙрдирдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд▓рдЧрд╛рдиреЗ рдХреЗ рд▓рд┐рдП global рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЛ рдкрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдпрд╣ рдЙрдиреНрд╣реЗрдВ "рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ" рдкрд╛рд░рд┐рдд рдХрд░реЗрдЧрд╛ред (рдПрдбреЗрдб рдЯреВ рдПрдбреАрдбреА: рдпрд╣ lib/mocha.js рдФрд░ browser-entry.js lib/mocha.js рджреЛрдиреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдХрд┐ рдкреНрд░рд╕реНрддрд╛рд╡ рдХреЗ рд╕рднреА рд╡реИрд╢реНрд╡рд┐рдХ-рд╕рдВрдмрдВрдзрд┐рдд рднрд╛рдЧ рдиреЛрдб рдФрд░ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рджреЛрдиреЛрдВ рдореЗрдВ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИрдВред )

    • рдмрд╛рдж рдореЗрдВ, рдпрд╣ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреА рд╕рднреА рд╕рд╛рдордЧреНрд░реА рдХреЛ global рдХреЙрдкреА рдХрд░реЗрдЧрд╛ред

    • localInterface рд╡рд┐рдХрд▓реНрдк (CLI рдкрд░ --local-interface ) рдореЛрдЪрд╛ рдХреЛ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ global рдХреЙрдкреА рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рджреЗрдЧрд╛ред

    • DEBATABLE: рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, require("mocha").it рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рдкрд╢реНрдЪ-рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рд╕реЗ TDD / BDD рдлрд╝рдВрдХреНрд╢рдВрд╕ рдХреЛ Mocha рдкрд░ рднреА рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред



      • (рдиреЛрдЯ: рдпрджрд┐ рд╣рдо рдЪрдпрдирд┐рдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдкрд░ рдмреАрдбреАрдбреА рдХреЛ рд╕реЗрдЯ рд╣реЛрдиреЗ рд╕реЗ рд░реЛрдХрддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдмреАрдбреАрдбреА рдХреЛ рдбрдореА рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдВ рдФрд░ рднреА рдЕрдзрд┐рдХ рд╡рд┐рд╢реЗрд╖ рд╣реИрдВрдбрд▓рд┐рдВрдЧ рдХрд░рдиреА рдкрдбрд╝ рд╕рдХрддреА рд╣реИ, рдЬрд╣рд╛рдВ рд╕реЗ рдЗрдиреНрд╣реЗрдВ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдорд╛рдорд▓рд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ, рдпрд╣ рдЕрднреА рднреА рдФрд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЕрдиреНрдп рдЪреАрдЬреЗрдВ рдЬреЛ рд╣рдо рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ / рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ рдЬрдмрдХрд┐ рдЕрднреА рднреА рдЗрд╕ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВред)



    • require("mocha/interface") рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧрд╛ред

    • require("mocha/interface/<specific interface>") рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдирдП рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рдХреЙрд▓ рдХрд░реЗрдЧрд╛ рдЬрд┐рд╕реЗ рдмрд╛рдж рдореЗрдВ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдЧрд╛ред

    • рдПрдбреЗрдб рдЯреВ рдПрдбреЗрдб: require("mocha/interface") рднреА mocha рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ mocha.interface , рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдмрд┐рдирд╛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдЙрдкрдпреЛрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реЛрдЧреАред

    • рдиреЛрдб-рдХреНрд╖рдорддрд╛

    • require("mocha/nodeable/<specific interface>") рдореЛрдЪрд╛ рдХреЛ рдкрд▓рдЯрд╛ рджреЗрдЧрд╛, рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдореЛрдЪрд╛ рдХреА рд╕реНрдерд╛рдкрдирд╛ рдХрд░реЗрдЧрд╛ (рд╕рдВрднрд╡рддрдГ setTimeout рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП рдЬрдм рддрдХ delay рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдКрдкрд░ рджреЗрдЦреЗрдВред delay ) рдФрд░ред рдЙрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рд░реНрдпрд╛рдд рдХрд░реЗрдВ рдЬреИрд╕реЗ require("mocha/interface/<specific interface>")

    • рдпрджрд┐ CLI рд╡рд┐рдХрд▓реНрдк рдпрд╛ mocha.opts рд╕рдорд░реНрдерд┐рдд рд╣реИ, рддреЛ require("mocha/nodeable") Mocha, рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ (рдКрдкрд░ рджреЗрдЦреЗрдВ) рдХреЗ рдмрд╛рдж рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП Mocha рдХреЛ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ, рдФрд░ CLI рдХреЗ рд╕рдорд╛рди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╕реЗрдЯрдЕрдк рдЪрд░рдг рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдирд┐рд░реНрдпрд╛рдд рдХрд░рддрд╛ рд╣реИ рдЪрдпрдирд┐рдд рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд╕реНрддреБ require("mocha/interface") ред

    • рдЕрдЧрд░ рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдиреЛрдб-рд╕рдХреНрд╖рдо рдкрд░реАрдХреНрд╖рдг рдлрд╛рдЗрд▓реЗрдВ mocha рддреЛ mocha/nodeable рдФрд░ mocha/nodeable/<specific interface> рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИрдВ, рд╣рдо mocha/interface рдкрд░ рдиреЛрдб-рдХреНрд╖рдорддрд╛ рдХреЛ рдЧреБрд▓реНрд▓рдХ-рдмреИрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ mocha/interface/<specific interface> ред

рд╡рд┐рдЪрд╛рд░?

рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдЧреЗ рдХреЗ рд╡рд┐рдЪрд╛рд░ рдкрд░, рдореИрдВ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП node <test file> рдХреЗ рд╕реНрдерд╛рди рдкрд░ mocha <test file> node <test file> рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рддрд░реНрдХ рдкрд░ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ:

  • рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд┐рд╕реА рднреА рдлрд╛рдпрджреЗ рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рд╣реИред

    • рдПрдХ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рддрд╛ рд╣реИ, рднрд▓реЗ рд╣реА рдЧреНрд▓реЛрдм mocha.opts ред рд╕рд░рд▓ рд╕рдорд╛рдзрд╛рди: test package.json npm test mocha node_modules/.bin/mocha npx mocha node_modules/.bin/mocha , mocha node_modules/.bin/mocha рдЪрд▓реЗрдВрдЧреЗред npx mocha ) рдХреЗрд╡рд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓ рдЪрд▓рд╛рдПрдЧреАред (рдлрд╛рдЗрд▓реЗрдВ рдпрд╛ рдЧреНрд▓рдмреНрд╕ рдЬреЛ рдХрд┐рд╕реА рднреА рдЯреЗрд╕реНрдЯ рд░рди рдХреЗ рд▓рд┐рдП рдЪрд▓рдиреЗ рдЪрд╛рд╣рд┐рдП, рдЪрд╛рд╣реЗ рдХрд┐рддрдиреА рднреА рдЯреЗрд╕реНрдЯ рдлрд╛рдЗрд▓реЗрдВ рдЪрд▓рд╛рдИ рдЬрд╛рдПрдВ, рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ mocha.opts рдореЗрдВ рдорд┐рд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред)

    • рдПрдХ рдФрд░ рд╕рдВрднрд╛рд╡рд┐рдд рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ mocha.opts рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрд╣ рдЕрдм mocha --opts /dev/null (рдпрд╛ рд╡рд┐рдВрдбреЛрдЬ mocha --opts nul ) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдпрд╣ рдирд╣реАрдВ рд╣реИ, рддреЛ mocha.opts рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП CLI рдзреНрд╡рдЬ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╕рд░рд▓ рд╣реЛрдЧрд╛ред

  • рдЗрд╕реЗ рдореЛрдЪрд╛ рдХреЗ рдмрд╛рд╣рд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ; "mocha/nodeable" рдмрдЬрд╛рдп, рдХреЗрд╡рд▓ рдПрдХ рдХрд╛рд▓реНрдкрдирд┐рдХ рдкреИрдХреЗрдЬ "nodeable-mocha" рдореЗрдВ рдореЛрдЪрд╛ рдХреЗ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдПрдкреАрдЖрдИ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ рд╣реА рдХреЛрдб рдбрд╛рд▓реЗрдВред

    • рдореИрдВ рдпрд╣ рдирд╣реАрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдкрд╣рд▓реА рдЬрдЧрд╣ рдореЗрдВ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдореИрдВ рдХрд╣ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдореБрдЭреЗ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдореЛрдЪрд╛ рдХреЗ рдмрд╛рд╣рд░ рд╣реЛрдиреЗ рдХреЗ рдХрд╛рд░рдг рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рдХрдард┐рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдХреНрдпрд╛ рд╣рдореЗрдВ рдХрд┐рд╕реА рдорд╣рддреНрд╡рдкреВрд░реНрдг рд▓рд╛рдн рдХреА рдЦреЛрдЬ рдХрд░рдиреА рдЪрд╛рд╣рд┐рдП рдЬреЛ рдХрд┐ рдЗрд╕рдХреЗ рдмрд╛рд╣рд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреЛрд░ рдореЗрдВ рд╣рд╛рд╕рд┐рд▓ рдХрд░рдирд╛ рдЖрд╕рд╛рди рд╣реИ, рд╣рдо рд╣рдореЗрд╢рд╛ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореИрдВ рдкрд░рд╣реЗрдЬ-рдЧреНрд▓реЛрдмрд▓реНрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдлрд┐рд░ рд╕реЗ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕реНрддрд╛рд╡ рджреЗрддрд╛ рд╣реВрдБ, рдХреНрдпреЛрдВрдХрд┐:

  • рд╣рд╛рд▓рд╛рдВрдХрд┐ рдлрд╛рдпрджреЗ рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдирд╣реАрдВ рд╣реИ (рдХрд┐рддрдиреЗ рдЕрдиреНрдп рдкреБрд╕реНрддрдХрд╛рд▓рдп describe , it рдЖрджрд┐ рдирд╛рдо рдХреЗ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ?), рд╡реЗ рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ рд╕рдВрднрд╡ рд╣реИрдВ (рдЙрд╕ рдкреНрд░рд╢реНрди рдХрд╛ рдЙрддреНрддрд░ рдЕрдзрд┐рдХ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ? 0 рд╕реЗ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ) - рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдо рд╕реНрдерд╛рди рдореЗрдВ рд╕рд╛рдорд╛рди рдбрдВрдкрд┐рдВрдЧ рдирд╣реАрдВ рд╣реИ, рд╕реИрджреНрдзрд╛рдВрддрд┐рдХ рд░реВрдк рд╕реЗ, рд░рд╛рдЗрдЯ рдерд┐рдВрдЧ рдЯреВ рдбреВред

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

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

рдЗрд╕рд▓рд┐рдП рдЖрдк рдпрд╣ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореЛрдЪрд╛ mocha рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдзреНрд╡рдЬ рдХреЗ рдкреАрдЫреЗ рдЬреЛ global рдкреНрд░рджреВрд╖рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

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

рддреЛ рдЖрдк рдмрд▓реНрдХрд┐ рд╕реБрдЭрд╛рд╡ рджреЗ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореЛрдЪрд╛ рдореЛрдЪрд╛ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдПрдХ рдзреНрд╡рдЬ рдХреЗ рдкреАрдЫреЗ рдЬреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдкреНрд░рджреВрд╖рдг рдирд╣реАрдВ рдХрд░реЗрдЧрд╛?

рд╣рд╛рдБред

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

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

(рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдереЛрдбрд╝реЗ-рдереЛрдбрд╝реЗ рдкреНрд░рдпрд╛рд╕ рдХреЛ Mocha рдСрдмреНрдЬреЗрдХреНрдЯ рдкрд░ рдХреЙрдкреА рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк require("mocha").it рд╕рдХреЗрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдмрдирд╛рдП рд░рдЦрдирд╛ рдЕрдЬреАрдм, рдЕрд╕рдВрдЧрдд , рдмрдЧ-рдкреНрд░рд╡рдг рд╣реИ рдФрд░ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╡реИрд╢реНрд╡рд┐рдХ рдирд╛рдорд╕реНрдерд╛рди рдХреЛ рдкреНрд░рджреВрд╖рд┐рдд рдХрд░рдиреЗ рд╕реЗ рднреА рдирд╣реАрдВ рдмрдЪрддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рдЙрд╕ рддрд░рд╣ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рд╣рдо рд╕рдВрджрд┐рдЧреНрдз рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕реЗ рд╕рд╣реА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред)

рдпрд╣ Mocha рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП node <test file> рд╣реЛрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд╡рд┐рдкрд░реАрдд IMO рд╣реИ, рдЬрд╣рд╛рдБ рддрдХ рдореБрдЭреЗ рдкрддрд╛ рд╣реИ рдЗрд╕рдХрд╛ рдХреЛрдИ рдлрд╛рдпрджрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ Mocha рдХреЗ рдЕрдВрджрд░ рдпрд╛ рдмрд╛рд╣рд░ рдЗрд╕реЗ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдЙрддрдирд╛ рд╣реА рдХрдард┐рди рд╣реЛрдЧрд╛ред

@stevenvachon
рдХреИрд╕реЗ рдЖрдирд╛ рд╣реИ рдХрд┐ const {describe, it} = require('mocha') рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ? рдореИрдВ рдмрд╕ рдЕрдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛ рдЧрдпрд╛ ...

$ node -v
v8.4.0

@zapphyre рдЖрдкрдХреЛ рдЕрднреА рднреА mocha рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕реВрдЯ рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, node рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВред

рдЖрдк node рд╕рд╛рде рдХрдИ рд╕реНрд░реЛрдд рдлрд╝рд╛рдЗрд▓реЗрдВ рдирд╣реАрдВ рдЪрд▓рд╛ рд╕рдХрддреЗ, рдЗрд╕рд▓рд┐рдП рдЖрдк mocha рдЕрдЯрдХреЗ рд╣реБрдП рд╣реИрдВред рдореБрдЭреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ / рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

рдЕрдзрд┐рдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рд╢реАрд░реНрд╖рдХ рдЕрджреНрдпрддрд┐рдд рдХрд░реЗрдВ

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

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

рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рдореИрдВ

  • рдореЛрдЪрд╛ рд▓реЛрдб рдХрд░реЗрдВ рдФрд░ рдПрдХ рд╡реИрд╢реНрд╡рд┐рдХ mocha рд╡рд╕реНрддреБ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ
  • mocha.setup({ui: 'bdd'}); рдЪрд▓рд╛рдПрдБ
  • SystemJS рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдкрд░реАрдХреНрд╖рдг рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд▓реЛрдб рдХрд░реЗрдВ
  • рдлрд┐рд░ рдореИрдВ рджреМрдбрд╝рддрд╛ рд╣реВрдВ
      mocha.checkLeaks();
      mocha.globals([]);
      mocha.run();

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

> mocha.run();
TypeError: Cannot read property 'search' of undefined
    at Mocha.mocha.run (/home/mha/one/node_modules/mocha/mocha.js:149:54)

рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ: рдореИрдВрдиреЗ https://github.com/mochajs/mocha/wiki/Using-Mocha-programmatically рдФрд░ mocha.addFile рдмрдЬрд╛рдп рдЗрд╕реЗ рд▓реЛрдб рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА, рдПрдХ рд╣реА рдкрд░рд┐рдгрд╛рдоред

рдХреНрдпрд╛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╡рд░реНрдгрди / рдЖрдпрд╛рдд рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рд╣реИ?

рдПрдХ рдирдпрд╛ (рдЕрднреА 20 рдШрдВрдЯреЗ рдкреБрд░рд╛рдирд╛ рд╣реИ) рд╡рд┐рдХреА рдкреГрд╖реНрда https://github.com/mochajs/mocha/wiki/Using-mocha-programmatically рд╣реИ рд▓реЗрдХрд┐рди рдпрд╣ рдкрд░реАрдХреНрд╖рдг рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИред

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

рдпрджрд┐ рд╡реИрдХрд▓реНрдкрд┐рдХ рд░рдирдЯрд╛рдЗрдо рдореЗрдВ рдПрдХ рдиреЛрдб рдЬреИрд╕рд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╣реИ (рдЬреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдо рд╣реИред рдЬреЗрдПрд╕ рдХрд░рддрд╛ рд╣реИ?) рддреЛ рдЖрдк alternative-executable ./node_modules/.bin/_mocha рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП

рдореБрдЭреЗ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдзрд╛рд╡рдХ / рд░реВрдкрд░реЗрдЦрд╛ рдХрд╛ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЕрдкрдирд╛ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдирд╣реАрдВ рд╣реИред

https://github.com/tapjs/node-tap/#tutti -i-gusti-sono-gii

рдЕрдм рдЬрдмрдХрд┐ https://github.com/mochajs/mocha/issues/3006 рдХреЛ рд╣рд▓ рдХрд░ рд▓рд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рдмреНрд░рд╛рдЙрдЬрд╝рд░ рдореЗрдВ рд╕рдорд╛рди рдирд╛рдо рд╡рд╛рд▓реЗ рдирд┐рд░реНрдпрд╛рдд рдХрд░рдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ред

рд╡рд░реНрддрдорд╛рди рдореЗрдВ, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдХрд░ рд░рд╣рд╛ рд╣реИ:

<script type="module">
  import './node_modules/mocha/mocha.js'
  console.log(mocha)
</script>

рд▓реЗрдХрд┐рди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдирд╣реАрдВ рд╣реИ:

<script type="module">
  import { mocha } from './node_modules/mocha/mocha.js'
  console.log(mocha)
</script>

(https://github.com/mochajs/mocha/issues/956#issuecomment-167453800 рджреНрд╡рд╛рд░рд╛ рдЕрдиреБрд░реЛрдзрд┐рдд)

рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдЬрдм рд╣рдо рдЕрдкрдиреА рд╢рд╛рдЦрд╛ рдХреЛ рд░реЛрд▓-рдЕрдк рдХреЗ рд╕рд╛рде рдорд░реНрдЬ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдЯреНрд░рд╛рдВрд╕рдкрд╛рдЗрд▓рд░ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХ esm рдмрдВрдбрд▓ рдФрд░ рдПрдХ рд╡рд┐рд░рд╛рд╕рдд рдмрдВрдбрд▓ рд╣реИ рдЬреЛ esm рдХреЛрдб рд░рд╛рд╕реНрддреЛрдВ рдХрд╛ рдЙрдкрднреЛрдЧ рдХрд░рддрд╛ рд╣реИ рдФрд░ рд╡реИрд╢реНрд╡рд┐рдХ рд╕реНрддрд░ рдХреА рд▓реАрдХ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдирдП рдЬреЛрдбрд╝реЗ рдЧрдП рдХреЛрдб рд░рд╛рд╕реНрддреЛрдВ рдФрд░ рдмрдВрдбрд▓реЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдзреНрдпрд╛рди рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ рд╣рдо рдмреНрд░рд╛рдЙрдЬрд╝рд░реЛрдВ рдФрд░ рдиреЛрдб рджреЛрдиреЛрдВ рдореЗрдВ рдмреНрд░реЗрдХ рдпрд╛ рдХреЛрдб рди рдХрд░реЗрдВ

рд╡реИрд╢реНрд╡рд┐рдХ рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдпрд╣ рд╕рд┐рд░реНрдл рдореЛрдЪрд╛ рд╡рд┐рд░рд╛рд╕рдд рдЪреАрдЬ рдмрдирд╛рддрд╛ рд╣реИред

Btw рдиреЗ рдмрд┐рдирд╛ рдЧреНрд▓реЛрдмрд▓реНрд╕ рдХреЗ рд╕рд┐рд░реНрдл @types/mocha рдмрдирд╛рдпрд╛: https://github.com/whitecolor/mocha-teses

рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рд╡реЗ (рдЧреНрд▓реЛрдмрд▓реНрд╕) рдмрд╕ рдЖрдзрд┐рдХрд╛рд░рд┐рдХ рддреМрд░ рдкрд░ рдЬрд▓реНрдж рд╣реА рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рдПрдВрдЧреЗред

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

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

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

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

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

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

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