У меня есть спор с коллегой по поводу done () в тестах Jest.
Он на несколько порядков опытнее с JavaScript, чем я, и я пришел после того, как async / await вообще былаПринято, плюс пришло из среды .NET, так что я к этому привык.
Я пишу свои тесты так:
it("should return 200 OK for POST method", async () => {
await request(app).post("SOMEENDPOINT")
.attach("file", "file")
.expect(200);
});
Он более привык к обещаниям, поэтому будет писать свои тесты какthis:
it("should return 200 OK for POST method", (done) => {
request(app).post("SOMEENDPOINT")
.attach("file", "file")
.expect(200, done);
});
Он в порядке с моим толчком к async / awiat, но настаивает на том, что я должен включить done, так что я либо делаю его модифицированную версию:
it("should return 200 OK for POST method", async (done) => {
await request(app).post("SOMEENDPOINT")
.attach("file", "file")
.expect(200, done);
});
Или:
it("should return 200 OK for POST method", async (done) => {
const res = await request(app).post("SOMEENDPOINT")
.attach("file", "file");
expect(res.status).toBe(200);
done();
});
Хотя я признаю, что вызов done () совершенно необходим, когда он включен в качестве параметра, у меня сложилось впечатление, что он совершенно не нужен при использовании async / await в этом контексте.
Запрос supertest.request.
Мой вопрос: нужно ли вообще использовать done с asnyc / await?