使用karma和webpack运行测试

Mic*_*ini 3 commonjs karma-runner webpack

我的项目有外部依赖,所以我配置了webpack:

externals:{
        'd3':'d3',
        'another-external-dep': 'another-external-dep'
}
Run Code Online (Sandbox Code Playgroud)

然后在代码中我需要这样的依赖:

var someProp = require('another-external-dep').someProp.

一切都很好,直到我整合业力.因此,当运行测试时,业力无法another-external-dep清楚地找到模块,因为它是外部依赖,并且我没有包含在文件列表中的karma配置中.

我如何模拟another-external-dep这样require('another-external-dep')返回模拟?还有我可以在配置或模拟中指定这个模拟的地方?

小智 8

您可以通过阵列中的依赖关系中人缘测试链接到外部依赖fileskarma.config.js.

module.exports = function karmaConfig(config) {
    config.set({
        ...
        files: [
            'path/to/external/jquery.js',
            'tests.webpack.js',
        ],
        webpack: {
            externals: {
                'jquery': 'jQuery',
            },
        },
        ...
    });
};
Run Code Online (Sandbox Code Playgroud)

这使得依赖关系在全局上下文中可用,然后您可以从webpack文件中引用它们,复制您的开发上下文.