前端开发中,我们经常会使用 Promise 来处理异步操作,而测试异步操作是前端开发中不可避免的一部分。在测试 Promise 时,我们可以使用 Chai-As-Promised 这个库来方便地进行测试。
Chai-As-Promised 简介
Chai-As-Promised 是 Chai 的一个插件,它提供了对 Promise 的支持。它可以让我们方便地测试 Promise 是否正确地被 resolved 或 rejected。
安装 Chai-As-Promised
我们可以使用 npm 来安装 Chai-As-Promised:
npm install chai-as-promised --save-dev
使用 Chai-As-Promised
在使用 Chai-As-Promised 进行测试之前,我们需要先引入它:
const chai = require('chai'); const chaiAsPromised = require('chai-as-promised'); chai.use(chaiAsPromised);
然后,我们就可以使用 Chai-As-Promised 的 API 来测试 Promise 了。
expect(Promise).to.be.fulfilled
这个 API 用来测试 Promise 是否被 resolved。如果 Promise 被 resolved,测试通过;如果 Promise 被 rejected,测试失败。
it('should return 42', () => { const promise = Promise.resolve(42); return expect(promise).to.be.fulfilled; });
expect(Promise).to.be.rejected
这个 API 用来测试 Promise 是否被 rejected。如果 Promise 被 rejected,测试通过;如果 Promise 被 resolved,测试失败。
it('should throw an error', () => { const promise = Promise.reject(new Error('something went wrong')); return expect(promise).to.be.rejected; });
expect(Promise).to.be.fulfilled.with(value)
这个 API 用来测试 Promise 是否被 resolved,并且 resolved 的值与给定的值相等。如果 Promise 被 resolved,并且 resolved 的值与给定的值相等,测试通过;否则,测试失败。
it('should return 42', () => { const promise = Promise.resolve(42); return expect(promise).to.be.fulfilled.with(42); });
expect(Promise).to.be.rejected.with(error)
这个 API 用来测试 Promise 是否被 rejected,并且 rejected 的错误与给定的错误相等。如果 Promise 被 rejected,并且 rejected 的错误与给定的错误相等,测试通过;否则,测试失败。
it('should throw an error with message "something went wrong"', () => { const promise = Promise.reject(new Error('something went wrong')); return expect(promise).to.be.rejected.with(Error, 'something went wrong'); });
示例代码
下面是一个使用 Chai-As-Promised 测试 Promise 的示例代码:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- -------------- - ---------------------------- ------------------------- ----- ------ - ------------ ------------------- -- -- - ---------- ------ ---- -- -- - ----- ------- - -------------------- ------ -------------------------------- --- ---------- ----- -- ------- -- -- - ----- ------- - ------------------ ---------------- ---- --------- ------ ------------------------------- --- ---------- ------ ---- -- -- - ----- ------- - -------------------- ------ ----------------------------------------- --- ---------- ----- -- ----- ---- ------- ---------- ---- -------- -- -- - ----- ------- - ------------------ ---------------- ---- --------- ------ ------------------------------------------ ---------- ---- -------- --- ---
总结
使用 Chai-As-Promised 可以方便地测试 Promise 是否正确地被 resolved 或 rejected。我们可以使用 Chai-As-Promised 的 API 来测试 Promise,并且可以给 API 传递参数来测试 Promise 的 resolved 或 rejected 的值是否正确。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65d834a31886fbafa45e01a5