Appearance
异步代码测试
案例里用到了axios,安装一下
npm install axios
功能函数接收回调函数的时候
功能函数
javascript
import axios from 'axios'
export const getData = (fn) =>{
axios.get('远端地址')
.then(res=>
fn(res.data)
)
}
测试函数
javascript
import { getData } from './getData';
// 注意下面这行里的done
test('async', (done)=>{
getData(data=>{
expect(data).toEqual({
success:true // 这里根据实际的返回值填写即可
})
})
done(); // 注意该函数
})
如果不加上done参数和done()方法,那么测试代码不会运行getData里面的代码快,结果就是,哪怕功能代码块里有错误,也不会检测出来。
再次提醒:一定要加上done参数和done()方法!!
功能函数返回promise的时候
功能函数
javascript
import axios from 'axios'
export const getData = () =>{
return axios.get('远端地址')
}
测试函数
javascript
import { getData } from './getData';
// 不需要done也不需要done()方法了
test('async', ()=>{
// 注意要用return
return getData().then(res=>{
expect(res.data).toEqual({
success: true
})
})
})
想捕获错误的结果(例如404)
测试函数
javascript
import { getData } from './getData';
// 不需要done也不需要done()方法了
test('返回了404', ()=>{
expect.assetions(1);
// 上面这行,代表后续代码必须执行一次expect
return getData().catch(e=>{
expect(e.toString().indexOf('404') > -1).toBe(true)
})
})