JS单元测试中,Promise如何实现异步代码的神奇效果?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1262个文字,预计阅读时间需要6分钟。
目录+前言+Promise的链式调用+MDN的错误+链式的默认处理+简写+async+await+前言+写这篇文章的起因是在写单元测试时,做如下测试时:new Promise((resolve, reject)=> reject(1)).then(()=> {}).catch(err=> {console.error(err)});
目录
- 前言
- promise 的链式调用
- MDN 的错误
- 链式的默认处理
- 简写
- async await
前言
写这篇文章的起因是在写单元测试时,做形如下测试时
new Promise((resolve, reject) => reject(1)).then().catch(err => { console.log(err) }) async function jestTest () { await Promise.resolve().then() console.log('这个时候catch预期已经被调用,且输出日志') } jestTest()
无法使用await将测试代码恰好阻塞到catch在Event Loop中被调用后的时机,从而检测到catch的执行,通过测试。
而使用“神奇”一词则是因为 promsie 的链式调用中确实有很多默认的 handler 和值的隐含传递。
本文共计1262个文字,预计阅读时间需要6分钟。
目录+前言+Promise的链式调用+MDN的错误+链式的默认处理+简写+async+await+前言+写这篇文章的起因是在写单元测试时,做如下测试时:new Promise((resolve, reject)=> reject(1)).then(()=> {}).catch(err=> {console.error(err)});
目录
- 前言
- promise 的链式调用
- MDN 的错误
- 链式的默认处理
- 简写
- async await
前言
写这篇文章的起因是在写单元测试时,做形如下测试时
new Promise((resolve, reject) => reject(1)).then().catch(err => { console.log(err) }) async function jestTest () { await Promise.resolve().then() console.log('这个时候catch预期已经被调用,且输出日志') } jestTest()
无法使用await将测试代码恰好阻塞到catch在Event Loop中被调用后的时机,从而检测到catch的执行,通过测试。
而使用“神奇”一词则是因为 promsie 的链式调用中确实有很多默认的 handler 和值的隐含传递。

