请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

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

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

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

3回答

大头爸爸啊 2020-11-03 17:16:35

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

0 回复 有任何疑惑可以回复我~
ustbhuangyi 2019-08-31 16:51:38

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

0 回复 有任何疑惑可以回复我~
ustbhuangyi 2019-08-30 09:38:41

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


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

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

0 回复 有任何疑惑可以回复我~
  • 提问者 慕姐5244529 #1
    我的除了截图中的用例不通过的异常,没有显示其它报错
    回复 有任何疑惑可以回复我~ 2019-08-30 09:45:56
  • ustbhuangyi 回复 提问者 慕姐5244529 #2
    有可能是我们安装的 jsdom 依赖包版本不一致? 这种情况你可以修改测试 case。
    回复 有任何疑惑可以回复我~ 2019-08-30 10:10:41
  • 提问者 慕姐5244529 回复 ustbhuangyi #3
    我尝试了一些case,好像都有问题,老师有什么好的改写方法吗
    回复 有任何疑惑可以回复我~ 2019-08-30 23:55:45
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信