Как выполнить тесты после события - PullRequest
0 голосов
/ 29 апреля 2018

Я хочу протестировать некоторые функции, которые требуют, чтобы клиент Discord.js был «готов», но я не нашел, как заставить Jest запускать мои тесты после события. Я пытался переместить тесты в функции, такие как

client.on("ready", () => {
  test(...);
})

но когда я запускаю npm test, он обнаруживает 0 тестов. Я также пытался написать функцию client.on внутри тестов, но она не обнаруживает expect и проходит без проверки.

test("sample", () => {
  client.on("ready", () => {
    expect(...);
  })
})

Я пытался просмотреть документы , но ничего не нашел. Кто-нибудь может мне помочь?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2018

Передав аргумент done, Jest будет ждать, пока не будет вызван done().

test("sample", done => {
  client.on("ready", () => {
    expect(...);
    done();
  })
})
0 голосов
/ 29 апреля 2018

Вы можете создать обещание, которое разрешается, и тест ждет его

test("sample", async() => {
  const p = new Promise((resolve) => {
     client.on("ready", () => {
       resolve()
     })
  })
  await p
  expect(...);

})

Также посмотрите, как работать с асинхронным кодом в тестах

...