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

Jest自定义环境类初始化报错:如何正确实例化并测试不同testEnvironmentOptions

解决Jest自定义环境类初始化时的TypeError问题

问题场景

我想测试带有不同testEnvironmentOptions的Jest自定义环境类,编写了如下自定义环境类和测试代码,但实例化时抛出「TypeError: Cannot destructure property 'projectConfig' of 'config' as it is undefined」错误,请问如何正确初始化该类?

自定义环境类代码

const NodeEnvironment = require('jest-environment-node');
class CustomEnvironment extends NodeEnvironment {
  constructor(config, context) {
    super(config, context);
  }

  async setup() {
    await super.setup();
  }

  async teardown() {
    await super.teardown();
  }
}

module.exports = CustomEnvironment;

测试代码

it('some Test', function() {
  const instance = new CustomEnvironment({
    testEnvironmentOptions: {
      providers: []
    }
  });
});

报错信息

TypeError: Cannot destructure property 'projectConfig' of 'config' as it is undefined.

  14 |
  15 |   constructor(config, context) {
> 16 |     super(config, context);

解决方案

问题出在你传给CustomEnvironment的配置不完整。Jest的NodeEnvironment父类构造函数需要一个包含projectConfig核心属性的完整配置对象,testEnvironmentOptions是嵌套在projectConfig里的,不能直接作为顶层属性传入。

正确的初始化方式是构造符合Jest要求的config对象,至少包含projectConfig(内部嵌套你的testEnvironmentOptions):

it('some Test', function() {
  const instance = new CustomEnvironment({
    projectConfig: {
      testEnvironmentOptions: {
        providers: []
      }
    },
    // 可根据需求补充其他必要属性,比如rootDir
    rootDir: process.cwd()
  });
});

如果你的自定义环境需要用到更多Jest配置属性,可以参考Jest的Config接口定义补充对应值。另外,context参数为可选,若需要可传入空对象或必要的上下文信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 04:30:58