如何在Jest测试中正确导入axios模块?
解决Jest测试中正确导入axios的问题
问题根源
你当前的问题出在自定义声明文件的错误配置,以及导入时使用了不存在的axiosAlt模块名——axios本身已经提供了官方TypeScript类型,完全无需手动编写声明文件。
修复步骤
清理无效配置
- 删除自定义的
helper/helper.d.ts文件 - 移除测试脚本顶部的
/// <reference path="./helper/helper.d.ts"/>引用
- 删除自定义的
修正axios导入语句
将测试脚本中的错误导入替换为正确方式,两种写法均可适配你的配置:// CommonJS 风格(匹配tsconfig的module配置) const axios = require('axios'); // 或 ES 模块风格 import axios from 'axios';确保依赖正确安装
执行命令确认axios已安装:npm install axios --save-dev注:axios v0.20.0+ 已内置TypeScript类型,无需额外安装
@types/axios验证配置兼容性
你的jest.config.ts和tsconfig.json配置基本正确,只需确认:tsconfig.json中module设置为commonjs(当前已满足)- Jest的
testEnvironment为node(当前已满足)
修改后的测试脚本示例
const axios = require('axios'); describe('Empty Test', () => { it('satisfies an empty test condition', () => { expect(true).toEqual(true); }); it('test get', async () => { // 建议用async/await优化异步测试的可读性 try { const response = await axios.get("some url"); console.log(`get matter response: ${JSON.stringify(response)}`); } catch (error) { console.log(`get matter error: ${JSON.stringify(error)}`); } expect(true).toEqual(true); }); });
额外提示
- 异步测试优先使用
async/await替代.then/.catch,既能提升可读性,也能避免测试提前结束的问题 - 如果仍遇到类型报错,可检查
tsconfig.json中typeRoots是否包含node_modules/@types(当前已配置)
内容的提问来源于stack exchange,提问作者Breeduss
相关产品推荐
相关产品推荐

