测试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端口的服务 关了好像就没问题了,不知道是不是这个原因
00 -
ustbhuangyi
2019-08-31
就是把你的 expect 改为
00 -
ustbhuangyi
2019-08-30
好像有些同学也是这个问题,这个比较奇怪了,理论上 jasmine.Ajax 就是 fake XMLHTTPRequest 的,如果 uninstall,就相当于直接发送请一个 /foo 的真实请求了,显然会报错,在我的控制台显示的是
这就相当于 jsdom 库抛出这个错误,你看看你那边是否显示这个错误。032019-08-30
相似问题