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

Replit环境下使用Jest时,如何在测试文件中导入主JavaScript文件的类与常量

Replit环境下使用Jest时,如何在测试文件中导入主JavaScript文件的类与常量

别着急!你遇到的其实是Node.js模块系统(CommonJS 和 ES 模块)不兼容的问题,在Replit里很容易解决,给你两种方案任选:

方案一:沿用CommonJS风格(最省心,适配原有测试代码)

既然原来的sum能通过require正常导入,说明你的Replit环境默认是CommonJS模块模式,那只需要把你自己的类和常量也用CommonJS的方式导出即可:

  1. 修改主文件sut.js,添加正确的导出
    在文件末尾把需要测试的变量、类都加入module.exports:

    // sut.js 示例
    // 假设你原来的sum函数是这样的
    function sum(a, b) {
      return a + b;
    }
    
    // 你的自定义常量和类
    const x = 10;
    const y = 20;
    class MyCustomClass {
      constructor(name) {
        this.name = name;
      }
    }
    
    // 导出所有需要在测试中使用的内容
    module.exports = { sum, x, y, MyCustomClass };
    
  2. 在测试文件sut.test.js中导入
    继续用require语法,把需要的内容解构出来:

    const { sum, x, y, MyCustomClass } = require('./sut');
    
    // 接下来就可以正常写测试了,比如:
    test('测试常量x的值', () => {
      expect(x).toBe(10);
    });
    
    test('测试自定义类', () => {
      const instance = new MyCustomClass('test');
      expect(instance.name).toBe('test');
    });
    

方案二:切换到ES模块(使用import/export语法)

如果你更习惯ES模块的import/export语法,需要先配置项目启用ES模块:

  1. 创建/修改package.json文件
    在项目根目录新建一个package.json(如果还没有的话),添加"type": "module"字段,告诉Node.js这是一个ES模块项目:

    {
      "type": "module"
    }
    
  2. 修改主文件sut.js为ES导出
    把原来的导出改成ES模块的语法:

    // sut.js 示例
    export function sum(a, b) {
      return a + b;
    }
    
    export const x = 10;
    export const y = 20;
    export class MyCustomClass {
      constructor(name) {
        this.name = name;
      }
    }
    
  3. 在测试文件sut.test.js中使用import导入
    注意导入路径要加上.js后缀(ES模块要求必须写全后缀):

    import { sum, x, y, MyCustomClass } from './sut.js';
    
    // 正常编写测试用例即可
    test('sum函数正常工作', () => {
      expect(sum(1,2)).toBe(3);
    });
    

    如果Jest运行时出现报错,可能需要在package.json里添加Jest的配置,关闭默认的转译(因为Replit的Node.js版本通常已经支持ES模块):

    {
      "type": "module",
      "jest": {
        "transform": {}
      }
    }
    

两种方案都能解决你复制粘贴代码的麻烦,第一种不用改太多配置,适合快速解决问题;第二种更符合现代JS的写法,看你个人习惯啦~

备注:内容来源于stack exchange,提问作者Doraemon

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 15:39:40