You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jest测试中正确导入axios模块?

解决Jest测试中正确导入axios的问题

问题根源

你当前的问题出在自定义声明文件的错误配置,以及导入时使用了不存在的axiosAlt模块名——axios本身已经提供了官方TypeScript类型,完全无需手动编写声明文件。

修复步骤

  1. 清理无效配置

    • 删除自定义的helper/helper.d.ts文件
    • 移除测试脚本顶部的/// <reference path="./helper/helper.d.ts"/>引用
  2. 修正axios导入语句
    将测试脚本中的错误导入替换为正确方式,两种写法均可适配你的配置:

    // CommonJS 风格(匹配tsconfig的module配置)
    const axios = require('axios');
    
    // 或 ES 模块风格
    import axios from 'axios';
    
  3. 确保依赖正确安装
    执行命令确认axios已安装:

    npm install axios --save-dev
    

    注:axios v0.20.0+ 已内置TypeScript类型,无需额外安装@types/axios

  4. 验证配置兼容性
    你的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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 03:11:50