如何在事件发生后执行测试

时间:2018-04-29 10:13:24

标签: javascript node.js continuous-integration jestjs discord.js

我想测试一些需要Discord.js客户端“准备好”的函数,但我没有找到如何让Jest在事件发生后运行我的测试。我尝试在像

这样的函数中移动测试
client.on("ready", () => {
  test(...);
})

但是当我运行npm test时,它会检测到0次测试。 我还尝试在测试中编写client.on函数,但它没有检测到expect并且在没有检查任何内容的情况下通过。

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

我试着看docs,但我没找到任何东西。 有人可以帮帮我吗?

2 个答案:

答案 0 :(得分:1)

您可以创建一个解析并且测试等待它的承诺

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

})

另请参阅测试中的work with asynchronous code

答案 1 :(得分:0)

通过传递done参数,Jest将等到done()被调用。

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