使用 window 对象环境变量时 Jest 测试失败?

Jest test fails when using window object environment variable?

我的测试 运行 起初很好,我现在使用基于 window 对象的环境变量,例如:

{window._env_.REACT_APP_URL}

但是当我 运行 我的测试时:它显示为 TypeError: Cannot read property 'REACT_APP_URL' of undefined

我是否需要在我的测试文件中做一些不同的事情来接受这种类型的变量,当我更改为 {process.env.REACT_APP_URL} 一切都按预期工作时?

有什么想法吗?

开箱即用的 window 对象上不存在 _env_ 属性,因此 TypeScript 抱怨您正在为 undefined 属性.

解决您的问题的最佳方法是将 window 变量重新分配给一个自定义变量,该变量将当前 window 类型与您自己的自定义 EnvironmentVariables 界面结合起来,并在您的改为测试:

interface EnvironmentVariables {
  '_env_': {
    'REACT_APP_URL': string
  }
}

const customWindow = window as Window & typeof globalThis & EnvironmentVariables;

// set the _env_ object with values
customWindow._env_ = {
  'REACT_APP_URL': 'url here'
}

// access REACT_APP_URL
customWindow._env_.REACT_APP_URL