测试:摩卡+打字稿+webpack



我正在使用TypeScript,Mocha(带有mocha-typescript插件(进行测试,WebPack用于构建我的应用程序。

最近,我决定为 WebPack 添加 DefinePlugin 来分隔生产和开发环境的配置:

import { AppSettings as DevSettings } from './appSettings.dev'
import { AppSettings as ProdSettings } from './appSettings.prod'
declare var __ENVIRONMENT__: string;
let settings = __ENVIRONMENT__ === 'prod' ? ProdSettings : DevSettings
export let AppSettings = settings;

在上面的代码片段中有一个全局变量__ENVIRONMENT__,这有助于选择我想使用的设置。此变量在 webpack.config 中定义.js如下所示:

module.exports = function(env) {
    var config = {
        // ...
        plugins: [
            new ExtendedDefinePlugin({
                __ENVIRONMENT__: env === 'prod' ? 'prod' : 'dev',
            })
        ]
        // ...
    }
    return config;
}

所以我将 package.json 中的测试执行更改为

"test": "webpack --env=dev && mocha --recursive"

如果我调用"测试",摩卡抛出错误(webpack 正确构建文件(:

ReferenceError: __ENVIRONMENT__ is not defined

测试观察程序也不起作用:

"test-watch": "mocha-typescript-watch"

抛出错误"以 1 退出"。

是否有可能将它们结合在一起?还是我应该使用另一种方式进行测试?

好的,因为我最终得到了我以错误的方式使用它。

webpack.config.js 中设置与 Node 相关的变量更正确:

module.exports = function(env) {
    var config = {
        // ...
        plugins: [
            new ExtendedDefinePlugin({
                'process.env': {
                    'NODE_ENV': env === 'prod' ? 'prod' : 'dev',
                }
            })
        ]
        // ...
    }
    return config;
}

并在必要时使用它,例如:

declare var process: any;
export let AppSettings = process.env.NODE_ENV === 'prod' ? ProdSettings : DevSettings;

因此,我的摩卡测试运行良好(因为它们是在 Node 中执行的,而不是在浏览器中执行的(。

最新更新