λλ μ΄κ²κ³Ό κ°μ κ°λ¨ν κ²μ΄ μμ΅λλ€.
` it("μ½μμ νΈμΆν΄μΌ ν¨", async(μλ£) => {
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();
});
μ΄κ²μ λλ₯Ό μν΄ μλν©λλ€.
λλ κ°μ λ¬Έμ λ₯Ό κ²ͺκ³ μμΌλ©° λ΄ μ½μμ΄ μ€ν¨νλμ§ ν μ€νΈν΄μΌνκΈ° λλ¬Έμ μ¬μ©μκ° μλ£ν΄μΌν©λλ€. κ·Έλμ κ·Έκ²μ μ‘μμ doneμ νΈμΆνμ§λ§ μ΄ μ€λ₯κ° λ°μνμ΅λλ€.
it("...", async function (done) {
try {
await asyncFung(...);
done("The call should have failed")
} catch (error) {
if (error instanceof MyError) {
done()
} else {
done(error)
}
}
});
κ°μ₯ μ μ©ν λκΈ
μ¬λμ€λ¬μ΄ ν¨μ λ§€κ° λ³μμ νλ¨μμ μ κ±°λ₯Ό μμ νλ λ°©λ²μ μ°Ύμκ³ μλν©λλ€. ν¨μ 맀κ°λ³μμ doneμ λ£μΌλ©΄ μλ§μ΄ λ©λλ€.