使用 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
我的测试 运行 起初很好,我现在使用基于 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