测试request.spec.ts的时候,遇到一个奇怪的问题

来源:12-10 Axios 实例模块单元测试 测试代码编写

慕姐5244529

2019-08-29

图片描述
报错如图,代码我看了一下跟老师的代码几乎是一样的:

test('should reject on network errors', () => {
    const resolveSpy = jest.fn((res: AxiosResponse) => {
      return res
    })

    const rejectSpy = jest.fn((err: AxiosError) => {
      return err
    })

    jasmine.Ajax.uninstall()

    return axios('/foo')
      .then(resolveSpy)
      .catch(rejectSpy)
      .then(next)

    function next(reason: AxiosResponse | AxiosError) {
      jasmine.Ajax.install()

      expect(resolveSpy).not.toHaveBeenCalled()
      expect(rejectSpy).toHaveBeenCalled()
      expect(reason instanceof Error).toBeTruthy()
      expect((reason as AxiosError).message).toBe('Network Error')
      expect(reason.request).toEqual(expect.any(XMLHttpRequest))
    }
  })

jasmine.Ajax.uninstall()的调用似乎没有触发request.onerror事件,而是直接进入了response的validateStatus的校验。

写回答

3回答

大头爸爸啊

2020-11-03

我本地iis上开了个80端口的服务 关了好像就没问题了,不知道是不是这个原因

0
0

ustbhuangyi

2019-08-31

就是把你的 expect 改为 //img1.sycdn.imooc.com/szimg/5d6a350a0915a7c208620060.jpg

0
0

ustbhuangyi

2019-08-30

好像有些同学也是这个问题,这个比较奇怪了,理论上 jasmine.Ajax 就是 fake XMLHTTPRequest 的,如果 uninstall,就相当于直接发送请一个 /foo 的真实请求了,显然会报错,在我的控制台显示的是 


//img1.sycdn.imooc.com/szimg/5d687deb09883ba718720452.jpg

这就相当于 jsdom 库抛出这个错误,你看看你那边是否显示这个错误。

0
3
慕姐5244529
回复
ustbhuangyi
我尝试了一些case,好像都有问题,老师有什么好的改写方法吗
2019-08-30
共3条回复

下一代前端开发语言 TypeScript从零重构axios

课程从零开始重构功能完整的JS库,是学习造轮子的不二之选!

2631 学习 · 877 问题

查看课程