我正在尝试在 Typescript 中使用 Jest 来模拟 axios 拦截器。但是,运行时出现错误:
“类型错误:无法读取未定义的属性‘请求’”在以下行:
axios.interceptors.request.use(async (config: AxiosRequestConfig) => {
这是我如何定义模拟
jest.mock('axios', () => ({
create: jest.fn(() => ({
get: jest.fn(),
interceptors: {
request: {
use: jest.fn((handler) => { interceptorFunction = handler; }),
},
response: {
use: jest.fn((handler) => { interceptorFunction = handler; }),
},
},
})),
}));
任何帮助/见解将不胜感激。
答案 0 :(得分:0)
您试图访问axios的interceptors属性,但它是在create方法的返回值下定义的。因此,如果您通过 console.log 函数检查 axios.interceptors 的值,则输出必须为 'undefined' 并且您无法访问任何 'undefined' 属性。 所以,你必须改变
axios.interceptors.request.use(...)
进入
axios.create().interceptors.request.use(...)
或者像这样更改模拟实现。
jest.mock('axios', () => ({
create: jest.fn(() => ({})),
get: jest.fn(),
interceptors: {
request: {
use: jest.fn((handler) => { //sth
}),
},
response: {
use: jest.fn((handler) => { //sth
}),
},
},
}));