如何使用TypeScript和mocha进行异步/等待测试

如何使用TypeScript和mocha进行异步/等待测试,typescript,async-await,mocha.js,Typescript,Async Await,Mocha.js,我有一个简单的异步mocha测试,但是done()回调似乎从未被调用过 describe("RiBot", function() { it("should start with a random topic", async (done) => { await RiBot.init(); let topic = RiBot.getTopic("testuser") assert.equal(topic, "FAILHERE"); done() }) }

我有一个简单的异步mocha测试,但是
done()
回调似乎从未被调用过

describe("RiBot", function() {
  it("should start with a random topic", async (done) => {
    await RiBot.init();
    let topic = RiBot.getTopic("testuser")
    assert.equal(topic, "FAILHERE");
    done()
  })
})
在这种情况下,断言应该失败,但我只是得到一个超时

  RiBot
  RibotTest topic +0ms undefined
    1) should start with a random topic


  0 passing (2s)
  1 failing

  1) RiBot should start with a random topic:
     Error: timeout of 2000ms exceeded. Ensure the done() callback is being called in this test.
编辑:当我以带断言的标准JS代码运行时:

async function testRiBot() {
  try {
    await RiBot.init()
    let topic = RiBot.getTopic("testuser")
    debug('topic', topic)
    assert.equal(topic, "FAILHERE", 'fail match on topic');
  } catch(err) {
    debug("err", err, err.stack)
  }
}
我确实得到了一个作为错误抛出的异常

  RibotTest err +2ms { [AssertionError: fail match on topic]
  name: 'AssertionError',
  actual: 'undefined',
  expected: 'FAILHERE',
  operator: '==',
  message: 'fail match on topic',
  generatedMessage: false } AssertionError: fail match on topic
    at /Users/dc/dev/rikai/boteditor/test/RiBot_test.js:19:20
    at next (native)
    at fulfilled (/Users/dc/dev/rikai/boteditor/test/RiBot_test.js:4:58)
    at process._tickCallback (node.js:412:9)

有人能用typescript async/await和mocha提供一个简单的例子吗?

试着这样定义你的测试。。。(同时删除您的已完成通话)

注意:如果您的测试返回一个承诺,那么mocha框架将查找要解决或拒绝的承诺,而不是一个已完成的回调。注意异步函数总是返回一个承诺


此外,最好避免使用箭头函数来定义测试,否则您无法从测试中访问正确的
this
上下文(即,您不能在测试代码中调用
this.title

您是否曾经在@dcsan中解决过这个问题?
it('should start with a random topic', async function () {
    // ...
});