• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
小码哥-倩倩
博客园    首页    新随笔    联系   管理    订阅  订阅

(五)Jest测试异步代码

方法一:回调函数

这是非常常见的通用处理方式,比如你有一个fetchData(callback)的function用来获取数据,并且在获取完成的时候调用callback 函数,你想测试返回的数据是“peanut butter” ,默认情况下当fetchData执行完成的时候Jest的测试就完成了,这并不是你所期望的那样的去运行。

代码示例:fetechData.js文件代码

import axios from 'axios'
export const fetchData = (fn)=>{
  axios.get("http://www.192.168.0.188:8080/demo.json").then(response)=>{
     fn(response.data) //返回success:true    
  });      
}  

对应的测试用例fetechData.test.js文件代码

  test('test fetchData返回结果为{successs:data}',(done)=>{
  fetchData(data)=>{
    expect(data).toEqual({
      success:true
    })
    done();//回调函数,测试用例执行完成执行done
  }

   })

 

 方法一:使用Promise方法

   代码示例:fetechData.js文件代码

  export const fetchData=()=>{
     return axios.get('http://www.192.168.0.188:8080/demo.json');
  }

   对应的测试用例fetechData.test.js文件代码

  test('test fetchData返回结果为{successs:data}',()=>{
  return fetchData().then((response)=>{
    expect(response.data).toEqual({
      success:true
    })
  }

   })

   也可以修改为

test('test fetchData返回结果为{successs:data}',()=>{
	return expect(fetchData()).resolve.toMatchObject({
				data:{
					success:true
				}
			})	
})

   测试404错误,接口不存在时

test('test fetechData返回404',()=>{
	expect.assertion(1)//1表示expect执行个数
	return fetchData().catch(e=>{
		console.log('e',e);
		expect(e.toString().indexOf('404')>-1).toBe(true)
	})
})

    也可以修改为:

test('test fetechData返回404',()=>{
	return expect(fetchData()).rejects.toThrow();
})

  

第三种:使用 Async/Await

我相信大家最Async/Await 是比较熟悉的,你可以在测试中使用异步和等待。要编写一个async测试,只需在传递到测试的函数前面使用async关键字。例如上面同样的fetchData场景可以使用下面的实现:

//测试接口正常
test('test fetchData返回结果为{successs:data}',async ()=>{ await expect(fetchData()).resolve.toMatchObject({ data{ success:true } }) })

测试异常用例  

//测试404
test('test fetechData返回404',async ()=>{ await expect(fetchData()).rejects.toThrow(); })

  

 

posted @ 2020-05-05 13:01  小码哥-倩倩  阅读(1082)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3