Mocha: рддреНрд░реБрдЯрд┐ рдЖ рд░рд╣реА рд╣реИ "рддреНрд░реБрдЯрд┐: рд╕рдорд╛рдзрд╛рди рд╡рд┐рдзрд┐ overspecified рд╣реИред рдПрдХ рдХреЙрд▓рдмреИрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ * рдпрд╛ * рдПрдХ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ; рджреЛрдиреЛрдВ рдирд╣реАрдВред"

рдХреЛ рдирд┐рд░реНрдорд┐рдд 15 рдорд╛рд░реНрдЪ 2017  ┬╖  6рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mochajs/mocha

рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреБрдЫ рдЖрд╕рд╛рди рд╣реИред

`рдпрд╣ ("рд╡рд╛рджрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП", async (рдХрд┐рдпрд╛ рдЧрдпрд╛) => {

    const testPromise = new Promise((resolve, reject) => {

        setTimeout(() => {

            resolve("Hello World!");

        }, 200);
    });


    const result = await testPromise;

    done();

}`

рд▓реЗрдХрд┐рди рдореБрдЭреЗ рддреНрд░реБрдЯрд┐ рдорд┐рд▓рддреА рд░рд╣рддреА рд╣реИ "рддреНрд░реБрдЯрд┐: рд╕рдВрдХрд▓реНрдк рд╡рд┐рдзрд┐ overspecified рд╣реИред рдХреЙрд▓рдмреИрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░реЗрдВ рдпрд╛ рд╡рд╛рджрд╛ рд╡рд╛рдкрд╕ рдХрд░реЗрдВ, рджреЛрдиреЛрдВ рдирд╣реАрдВред"ред

рдЕрдЧрд░ рдореИрдВ рдХрд┐рдпрд╛ () рдирд┐рдХрд╛рд▓рддрд╛ рд╣реВрдВ рддреЛ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рд╕рдордп рд╕рдорд╛рдкреНрдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

tsconfig.json
{ "compilerOptions": { "module": "commonjs", "target": "ES6", "noImplicitAny": false, "types": ["node", "mocha","supertest"], "typeRoots": [ "./node_modules/@types" ] } }
mocha.opts
--require ts-node/register --reporter dot --watch-extensions tsx,ts test/**/*.ts

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

рд╕реБрдВрджрд░ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдлрдВрдХреНрд╢рди рдкрд░рдо рдФрд░ рдиреАрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рдо рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдпрд╣ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

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

рд╕реБрдВрджрд░ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдлрдВрдХреНрд╢рди рдкрд░рдо рдФрд░ рдиреАрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рдо рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдпрд╣ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ

рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ async рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред

рдРрд╕рд╛ рддрдм рддрдХ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк async , рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ @ScottFreeCode рдиреЗ рдХрд╣рд╛ рд╣реИ, рдпрд╣ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ done() рдХреЙрд▓ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред

рдХрд┐рдпрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛!

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

image

рдХреЗ рдмрд╛рдж (рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!):

image

рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рд░реЛрд╣:

image

рдореИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛ done рд╕рдорд╛рд░реЛрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдФрд░ рд╕реЗ done() рд╕рдорд╛рд░реЛрд╣ рдХреА рдХреЙрд▓
рдкрд╣рд▓реЗ

   before(async function (done) {
        user = new User({ ...});
        await user.save();
        done()
    });

рдмрд╛рдж рдореЗрдВ

   before(async function () {
        user = new User({ ...});
        await user.save();
    });

рдпреЗ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ

рдореБрдЭреЗ рдПрдХ рд╣реА рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд░рд╣реА рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдкрд░реАрдХреНрд╖рдг рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдХрд┐ рдореЗрд░рд╛ рд╡рд╛рджрд╛ рд╡рд┐рдлрд▓ рд░рд╣рддрд╛ рд╣реИред рддреЛ рдореИрдВ рдЗрд╕реЗ рдкрдХрдбрд╝ рд▓реЗрддрд╛ рд╣реВрдВ, рдФрд░ рдлрд┐рд░ рдХреЙрд▓ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рддреНрд░реБрдЯрд┐ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд░рд╣рд╛ рд╣реВрдВред

it("...", async function (done) {
  try {
    await asyncFung(...);
    done("The call should have failed")
  } catch (error) {
    if (error instanceof MyError) {
      done()
    } else {
      done(error)
    }
  }
});
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

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

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

jmiller-airfox picture jmiller-airfox  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

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

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

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