通过 WebPack.DefinePlugin 注入的全局变量似乎与我的 Mocha 单元测试不兼容。在运行测试时,这些全局变量无法被识别,而 Mocha 文档 似乎没有一种方法来注入这些全局变量。
我该如何注入这些变量以使它们在单元测试中起作用?
详细描述:
假设有一个具有以下配置的 WebPack 项目:
如果我使用以下选项运行Mocha:
"Mocha将遇到以下错误:"
我该如何注入这些变量以使它们在单元测试中起作用?
详细描述:
假设有一个具有以下配置的 WebPack 项目:
{
...
plugins: [
...
new webpack.DefinePlugin({
__ENV__: JSON.stringify(process.env.ENVIRONMENT),
...
}),
...
]
}
我在项目中有以下TypeScript代码:
declare let __ENV__: string;
...
export const ENV = __ENV__;
如果我使用以下选项运行Mocha:
mocha --compilers ts:ts-node/register --require ./test/entry.ts **/*.test.ts
"Mocha将遇到以下错误:"
C:\git\project\src\constants\config.ts:7
export const ENV = __ENV__;
^
ReferenceError: __ENV__ is not defined
at Object.<anonymous> (C:\git\project\src\constants\config.ts:7:20)
...
我的尝试
我认为我应该在entry.ts
文件中定义__ENV__
。以下所有尝试都失败了,运行mocha时会出现各种错误:
const __ENV__ = 'dev'; // Same message as above.
window.__ENV__ = 'dev'; // Property '__ENV__' does not exist on type 'Window'.
window['__ENV__'] = 'dev'; // ReferenceError: window is not defined
global.__ENV__ = 'dev'; // Property '__ENV__' does not exist on type 'Global'.
export declare let __ENV__ = 'dev'; // Initializers are not allowed in ambient contexts.
export declare const __ENV__ = 'dev'; // Initializers are not allowed in ambient contexts.