初面网初面网

异步代码测试

案例里用到了axios,安装一下

npm install axios

功能函数接收回调函数的时候

功能函数

import axios from 'axios'

export const getData = (fn) =>{
  axios.get('远端地址')
  .then(res=>
    fn(res.data)
  )
}

测试函数

import { getData } from './getData';

// 注意下面这行里的done
test('async', (done)=>{
  getData(data=>{
    expect(data).toEqual({
      success:true  // 这里根据实际的返回值填写即可
    })
  })
  done(); // 注意该函数
})

如果不加上done参数和done()方法,那么测试代码不会运行getData里面的代码快,结果就是,哪怕功能代码块里有错误,也不会检测出来。

再次提醒:一定要加上done参数和done()方法!!

功能函数返回promise的时候

功能函数

import axios from 'axios'

export const getData = () =>{
  return axios.get('远端地址')
}

测试函数

import { getData } from './getData';

// 不需要done也不需要done()方法了
test('async', ()=>{
  // 注意要用return
  return getData().then(res=>{
    expect(res.data).toEqual({
      success: true
    })
  })
})

想捕获错误的结果(例如404)

测试函数

import { getData } from './getData';

// 不需要done也不需要done()方法了
test('返回了404', ()=>{
  expect.assetions(1);
  // 上面这行,代表后续代码必须执行一次expect
  return getData().catch(e=>{
    expect(e.toString().indexOf('404') > -1).toBe(true)
  })
})

更新于 2025/2/26