关于网络测试requests.spec.ts

来源:12-8 请求模块单元测试 jasmine-ajax + 测试代码编写

躁动的胸大肌

2019-07-19

代码

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

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

    jasmine.Ajax.uninstall()

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

    function next(reason: AxiosResponse | AxiosError) {
      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.install()

      done()
    }
  })

这里在jest中测试,使用的是原生的xmlhttpquest?,error类型为

[object DOMException]

而且readystatechange事件和error事件无法触发
图片描述

写回答

1回答

ustbhuangyi

2019-07-19

你运行我源码的测试用例呢?
执行了 jasmine.Ajax.uninsall() 后,发送的就是真实的  XMLHTTPRequest 了

0
1
躁动的胸大肌
``` expect(received).toBe(expected) // Object.is equality Expected: "Network Error" Received: "request failed with status code 404" 55 | expect(rejectSpy).toHaveBeenCalled() 56 | expect(reason instanceof Error).toBeTruthy() > 57 | expect((reason as AxiosError).message).toBe('Network Error') | ^ 58 | expect(reason.request).toEqual(expect.any(XMLHttpRequest)) 59 | 60 | jasmine.Ajax.install() at next (test/requests.spec.ts:57:46) ``` status: 404 是不是因为我电脑开了80端口的原因
2019-07-19
共1条回复

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

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

2629 学习 · 877 问题

查看课程