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

使用Mocha测试JavaScript静态方法遇类型错误求助

问题解决:TestUtils.test1 不是函数的报错原因及修复方法

问题出在模块导入导出的语法不匹配:

  • 你的TestUtils类用了ES模块的export default导出
  • 测试代码却用CommonJS的require()导入,直接赋值的话,拿到的是一个包含default属性的模块对象,而不是类本身,自然找不到test1静态方法。

给你三种修复方案,选适合你的就行:

方案1:调整require导入逻辑,取default属性

直接在require后加.default,拿到实际导出的类:

const TestUtils = require("path to TestUtils").default;

describe("TestUtils", function () {
  it("test1 returns 42", function () {
    expect(TestUtils.test1()).is.equal(42);
  });
});

方案2:测试文件改用ES模块导入

先确保项目支持ES模块(在项目根目录的package.json里添加"type": "module"),然后把测试代码改成import语法:

import TestUtils from "path to TestUtils";

describe("TestUtils", function () {
  it("test1 returns 42", function () {
    expect(TestUtils.test1()).is.equal(42);
  });
});

方案3:修改TestUtils的导出方式为CommonJS

如果项目更倾向于用CommonJS,把TestUtils的代码改成:

class TestUtils {
  static test1() {
    return 42;
  }
}

module.exports = TestUtils;

这样原来的require导入代码就能正常运行,不需要修改测试文件。

内容的提问来源于stack exchange,提问作者Tima

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 10:55:23