Π£ ΠΌΠ΅Π½Ρ Π΅ΡΡΡ ΡΠ°ΠΊΠ°Ρ ΠΏΡΠΎΡΡΠ°Ρ Π²Π΅ΡΡ.
`it (" Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π²ΡΠ·ΡΠ²Π°ΡΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅ ", async (done) => {
const testPromise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Hello World!");
}, 200);
});
const result = await testPromise;
done();
} `
ΠΠΎ Ρ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΠ± ΠΎΡΠΈΠ±ΠΊΠ΅: Β«ΠΡΠΈΠ±ΠΊΠ°: ΠΌΠ΅ΡΠΎΠ΄ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π·Π°Π΄Π°Π½. Π£ΠΊΠ°ΠΆΠΈΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ½ΡΠΉ Π²ΡΠ·ΠΎΠ² ΠΈΠ»ΠΈ Π²Π΅ΡΠ½ΠΈΡΠ΅ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, Π½ΠΎ Π½Π΅ ΡΠΎ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅Β».
ΠΡΠ»ΠΈ Ρ Π²ΠΎΠ·ΡΠΌΡ done (), Π²ΡΠ΅ΠΌΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΡΡΠ΅ΡΠ΅Ρ.
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
ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π½Π°ΡΠ΅Π», ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²Π½ΠΈΠ·Ρ, ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π²Π²ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ done Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ½ ΠΈΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ΅ΠΊΠΎΡΡΠΊ
ΠΠΎΠΌΠ½ΠΈΡΠ΅ ΡΠ°ΠΊΠΆΠ΅, ΡΡΠΎ async
ΡΡΠ½ΠΊΡΠΈΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅.
ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΠΏΠΎΠΊΠ° Π²Ρ async
, ΠΈ, ΠΊΠ°ΠΊ ΡΠΊΠ°Π·Π°Π» @ScottFreeCode , ΠΎΠ½ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠ±Π΅ΡΠ°Π½ΠΈΠ΅, ΠΏΠΎΡΡΠΎΠΌΡ ΠΌΡ ΠΏΡΠΎΡΡΠΎ ΠΏΡΠΎΠΏΡΡΠΊΠ°Π΅ΠΌ Π²ΡΠ·ΠΎΠ² done()
. ΡΠ°Π±ΠΎΡΠ°Π΅Ρ.
Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π³ΠΎΡΠΎΠ²ΠΎΠ³ΠΎ ΡΡΠ°Π±ΠΎΡΠ°Π»ΠΎ Π΄Π»Ρ ΠΌΠ΅Π½Ρ!
ΠΠ:
ΠΠΠ‘ΠΠ (Π Π°Π±ΠΎΡΠ°Π΅Ρ !!):
Π€ΡΠ½ΠΊΡΠΈΡ getResponse:
ΠΠ½Π΅ ΠΏΡΠΈΡΠ»ΠΎΡΡ ΡΠ΄Π°Π»ΠΈΡΡ 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)
}
}
});
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΠΎ Π½Π°ΡΠ΅Π», ΠΊΠ°ΠΊ ΡΡΠΎ ΠΈΡΠΏΡΠ°Π²ΠΈΡΡ, ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ΄Π΅Π»Π°Π½ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π²Π½ΠΈΠ·Ρ, ΠΈ ΠΎΠ½ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π²Ρ Π²Π²ΠΎΠ΄ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ done Π² ΡΡΠ½ΠΊΡΠΈΡ, ΠΎΠ½ ΠΈΠ΄Π΅Ρ Π½Π°ΠΏΠ΅ΡΠ΅ΠΊΠΎΡΡΠΊ