Требуется ли сделать это в асинхронных тестах Jest? - PullRequest
2 голосов
/ 05 ноября 2019

У меня есть спор с коллегой по поводу 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?

...