dcs*_*san 4 mocha.js async-await typescript
我有一个简单的异步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()
})
})
Run Code Online (Sandbox Code Playgroud)
在这种情况下,断言应该失败,但我只是暂停.
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.
Run Code Online (Sandbox Code Playgroud)
编辑:当我使用断言运行标准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)
}
}
Run Code Online (Sandbox Code Playgroud)
我确实得到一个异常抛出的错误.
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)
Run Code Online (Sandbox Code Playgroud)
有人可以使用打字稿async/await和mocha提供一个简单的例子吗?
小智 8
尝试像这样定义你的测试......(同时删除完成的调用)
it('should start with a random topic', async function () {
// ...
});
Run Code Online (Sandbox Code Playgroud)
请注意,如果您的测试返回Promise,那么mocha框架将查找要解析或拒绝的Promise而不是完成回调.注意异步函数始终返回Promise.
此外,最佳做法是避免使用箭头函数来定义测试,否则您无法this从测试中访问正确的上下文(即,您无法执行this.title在测试代码中调用的操作).
| 归档时间: |
|
| 查看次数: |
4336 次 |
| 最近记录: |