Chai 如何辨别一个 Promise 对象是 resolved 还是 rejected?

· 约 4 分钟读完

在前端开发中,我们经常会使用 Promise 来处理异步操作。而在测试中,我们也需要对 Promise 进行断言,判断其是否正确执行。Chai 是一个常用的断言库,它提供了多种方式来辨别一个 Promise 对象是 resolved 还是 rejected。

1. 使用 eventually 方法

Chai 提供了 eventually 方法,可以用于判断 Promise 对象是否 resolved。示例代码如下:

上述代码中,eventually 方法可以链式调用,用于判断 Promise 是否 resolved。如果 Promise 被 resolved,它会返回 resolved 的值;如果 Promise 被 rejected,它会抛出错误。be.rejectedWith 方法则用于判断 Promise 是否被 rejected,并可以指定错误信息。

2. 使用 fulfilled 和 rejected 方法

除了 eventually 方法,Chai 还提供了 fulfilled 和 rejected 方法,用于判断 Promise 是否 resolved 或 rejected。示例代码如下:

上述代码中,fulfilled 方法用于判断 Promise 是否 resolved,rejected 方法用于判断 Promise 是否 rejected。

3. 使用 notify 方法

有时候我们需要在测试中使用回调函数来处理异步操作,而 Chai 也提供了 notify 方法来处理这种情况。示例代码如下:

上述代码中,notify 方法可以用于处理回调函数,当 Promise 被 resolved 或 rejected 时,它会调用回调函数并传入错误信息。这种方式可以避免在测试中使用 done 方法来处理异步操作。

总之,Chai 提供了多种方式来辨别一个 Promise 对象是 resolved 还是 rejected,我们可以根据需要选择合适的方法来进行断言。同时,在使用 Promise 进行异步操作时,我们也需要注意 Promise 的状态,以便进行正确的断言和处理。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/67d42e6fa941bf71347e1f68