javascript - 使用 axios 和拦截器测试 API WITH JEST ( REACT JS )
问题描述
我正在我的项目中使用模拟进行测试。但由于某种原因,当我运行 npm test -- api-service 时出现此错误。
我在开玩笑。
当我尝试运行测试时,我不知道为什么会出现此错误。
有人打电话帮我吗?
api.service.test.js
import ApiService from './Api-service';
jest.mock('axios');
it('return wellheads', async () => {
const wellheads = {
0: {
UniqueWellboreIdentifier: 'BR 3-OGX-50D-RJS',
UniqueWellIdentifier: 'BR 3-OGX-50D-RJS',
CountryIdentifier: 'Brazil',
BasinIdentifier: 'Santos',
FieldIdentifier: 'TUBARAO AZUL',
Latitude: -23.56569,
Longitude: -41.445133,
},
1: {
UniqueWellboreIdentifier: 'BR 1-BRSA-532-SPS',
UniqueWellIdentifier: 'BR 1-BRSA-532-SPS',
CountryIdentifier: 'Brazil',
BasinIdentifier: 'Santos',
FieldIdentifier: 'No field related',
Latitude: -25.624473,
Longitude: -43.905731,
},
};
const resp = { data: wellheads };
axios.interceptors.get.mockResolvedValue(resp);
return ApiService.getWellhead().then((data) =>
expect(data).toEqual(wellheads)
);
});
api-interceptors.js
import axios from 'axios';
import { authContext, getAdalApiToken } from '../config/AdalConfig';
import conf, { getResource } from './../settings';
const api = axios.create({
baseURL: getResource('psa').ApiBaseUrl,
});
api.interceptors.request.use(
(config) => {
return new Promise((resolve, reject) => {
authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
if (!!token) {
config.headers.Authorization = `Bearer ${token}`;
resolve(config);
} else {
reject(config);
}
});
});
},
function (error) {
console.log(error);
return Promise.reject(error);
}
);
api.interceptors.response.use(undefined, (err) => {
if (
err.response &&
err.response.status === 401 &&
err.response.config &&
!err.response.config.__isRetryRequest
) {
err.response.config.__isRetryRequest = true;
return new Promise((resolve, reject) => {
authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
getAdalApiToken();
if (!!token) {
api.defaults.headers.common['Authorization'] = `Bearer ${token}`;
resolve(err.config);
} else {
reject(err.config);
}
});
// authContext.acquireToken(process.env.REACT_APP_CLIENT_ID, (message, token, msg) => {
// axios.defaults.headers.common['Authorization'] = `Bearer ${token}`;
// err.config.headers.Authorization = `Bearer ${token}`;
// axios(err.config).then(resolve, reject);
// });
});
}
throw err;
});
export default api;
当我运行时,错误是:
测试套件未能 runice.test。TypeError:无法读取未定义的属性“拦截器”
7 | });
8 |
> 9 | api.interceptors.request.use(
| ^
10 | (config) => {
10 | (config) => {
11 | return new Promise((resolve, reject) => {
12 | authContext.acquireToken(conf.AzureADClientId, (message, token, msg) => {
解决方案
推荐阅读
- xamarin.forms - CryptoJS 到 C# SHA256 加密
- php - 精选帖子循环显示错误的帖子摘录
- javascript - loopback tx.notifyObserversOf 不是函数错误
- html - CSS 多重属性
- angular - 如何覆盖 Angular 中以前的路由,使其不会出现在单击后退按钮时?
- c - 为什么 C 编程中 scanf 命令的顺序很重要?
- lua - VLC time2clip.lua,将当前时间戳复制到剪贴板的扩展格式错误
- flutter - Dartz 接口无效覆盖
- reactjs - 你可以在云中运行 WebpackDevServer 吗?
- javascript - 将字符串中的数值相加