如何在不返回promise或调用done回调的情况下解析异步mocha测试

dob*_*ler 1 javascript mocha.js promise async-await

我希望更好地理解以下示例为什么按预期工作的内部结构:

describe('async await', () => {
    it('resolves without return', async () => {
        await asyncOperation();
    });
});

function asyncOperation() {
    return new Promise((resolve) => {
        setTimeout(() => {
            resolve();
        }, 123);
    });
}
Run Code Online (Sandbox Code Playgroud)

通常,异步mocha测试必须返回一个promise(或执行完成的回调),但在此示例中没有返回任何内容,但mocha测试仍然有效.这究竟是如何工作的?

Era*_*hel 6

async文档:

async函数声明定义了一个异步函数,它返回一个AsyncFunction对象.

描述

当调用异步函数时,它返回一个Promise.当异步函数返回一个值时,将使用返回的值解析Promise.当异步函数抛出异常或某个值时,将使用抛出的值拒绝Promise.

这意味着在您的情况下,Promise返回a,这就是您的测试工作的原因.