【发布时间】:2018-02-23 07:28:54
【问题描述】:
我有以下测试用例:
it("should pass the test", async function (done) {
await asyncFunction();
true.should.eq(true);
done();
});
运行它断言:
错误:解决方法被过度指定。指定回调或 返回一个承诺;不是两者兼而有之。
如果我删除 done(); 语句,它会断言:
错误:超过 2000 毫秒的超时。对于异步测试和钩子,确保 “完成()”被调用;如果返回一个 Promise,请确保它解析。
如何解决这个悖论?
【问题讨论】:
-
去掉
done();的时候,是不是也去掉了函数中的done参数? -
不应该有退货声明吗?我的印象是所有同步功能都需要返回来解决。
-
@ShyamBabu:不,一旦他们等待的最后一个承诺完成,如果没有明确的
return,他们就会用undefined解决。 -
@T.J.Crowder 我刚刚删除了 func 签名中的 done 参数,它正在工作!请重写它作为答案,我会接受。
-
@Alon:大声笑,一旦我向自己证明这是问题所在,我确实在写它。就是现在。 :-)
标签: javascript unit-testing typescript async-await mocha.js