рдореЗрд░реЗ рдкрд╛рд╕ рдРрд╕рд╛ рдХреБрдЫ рдЖрд╕рд╛рди рд╣реИред
`рдпрд╣ ("рд╡рд╛рджрд╛ рдХреЙрд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП", 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
рд╕реБрдВрджрд░ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдлрдВрдХреНрд╢рди рдкрд░рдо рдФрд░ рдиреАрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рдо рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдпрд╣ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ
рдпрд╣ рднреА рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ async
рдлрд╝рдВрдХреНрд╢рди рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдПрдХ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИред
рдРрд╕рд╛ рддрдм рддрдХ рд▓рдЧрддрд╛ рд╣реИ рдЬрдм рддрдХ рдЖрдк async
, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ @ScottFreeCode рдиреЗ рдХрд╣рд╛ рд╣реИ, рдпрд╣ рд╡рд╛рджрд╛ рд▓реМрдЯрд╛рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХреЗрд╡рд▓ done()
рдХреЙрд▓ рдХрд░рдирд╛ рдЫреЛрдбрд╝ рджреЗрддреЗ рд╣реИрдВред рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред
рдХрд┐рдпрд╛ рдХреЛ рд╣рдЯрд╛рдирд╛ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рдЧрдпрд╛!
рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ:
рдХреЗ рдмрд╛рдж (рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ !!):
рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдорд╛рд░реЛрд╣:
рдореИрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдЯрд╛ рджрд┐рдпрд╛ рдерд╛ 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)
}
}
});
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рд╕реБрдВрджрд░ рдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рдЗрд╕реЗ рдХреИрд╕реЗ рдареАрдХ рдХрд┐рдпрд╛ рдЬрд╛рдП рдлрдВрдХреНрд╢рди рдкрд░рдо рдФрд░ рдиреАрдЪреЗ рдореЗрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдФрд░ рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЬреИрд╕реЗ рд╣реА рдЖрдк рдХрд┐рдП рдЧрдП рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкрд░рдо рдореЗрдВ рдбрд╛рд▓рддреЗ рд╣реИрдВ, рдпрд╣ рдЦрд░рд╛рдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ