test не завершается ошибкой при использовании аргумента done в асинхронной функции - PullRequest
0 голосов
/ 22 января 2019

Тестовый случай автоматически остановится, даже если тест не пройден

  const getAsync = async () => 1

  test("expect inside async", async (done) => {
    const a = await getAsync()
   // expect(a).toEqual(1) this will pass
    expect(a).toEqual(2)
    done()
  })

Ожидается: тест не пройден с не равным

Но, Результат

    Timeout - Async callback was not invoked within the 5000ms timeout specified by jest.setTimeout.

Обновление

Полагаю, моя проблема заключалась в аргументе "сделано".

Когда я использовал аргумент done, тест не прошел Но когда я его уберу, тест не пройдёт.

но я все еще не знаю неправильно с использованием "done in async await?

Ответы [ 2 ]

0 голосов
/ 23 января 2019

См. Также: https://github.com/facebook/jest/issues/3519

, если вы используете чистый асинхронный режим без ожидания, обратитесь к @Acanthika's anwser

, если вы используете done:

  test.only("should not pass", async (done) => {
    try {
      const a = await getAsync()
      expect(a).toEqual(2)
      done()
    } catch (e) {
      // have to manually handle the failed test with "done.fail"
      done.fail(e)
    }
  })
0 голосов
/ 22 января 2019

По Документация Jest , это то, что вам нужно сделать с асинхронным, подождите.Асинхронное ожидание всегда будет ожидать возвращаемого значения.

test('expect inside async', async () => {
  expect.assertions(1);
  const a = await getAsync();
  expect(a).toEqual(2);
});

Или, как указано в документации,

test('expect inside async', async () => {
  expect.assertions(1);
  await expect(getAsync()).resolves.toEqual(2);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...