使用Karma和Istanbul时从coverage中排除文件

Joe*_*Joe 7 javascript node.js karma-runner istanbul minmatch

我正在使用Karma测试我的JavaScript并获得报道.我正在使用伊斯坦布尔覆盖率报告,这是默认值.这是我的预处理器参数:

    preprocessors: {
        'framework/**/*.js':'coverage',            
        'framework/*.js':'coverage',
        '!framework/node/**/*.js':'coverage',         
        '!framework/test/**/*.js':'coverage',                                 
        'framework-lib/**/*.js':'coverage',
        '!framework-lib/tool-data-api/tool-data-api.js':'coverage'
    }
Run Code Online (Sandbox Code Playgroud)

如你所见,我正在尝试使用"!" 作为negate命令,通常与Node一起使用.但是,它不能在这里工作,我的目录都没有被排除.

有什么方法可以做我想要完成的事情吗?

Jon*_*ieb 7

根据https://karma-runner.github.io/0.12/config/configuration-file.html:

**/*
.js:所有子目录中扩展名为"js"的所有文件**/!(jquery).js:与上一个相同,但不包括"jquery.js"
**/(foo | bar).js:在所有子目录中,所有"foo.js"或"bar.js"文件

所以,基于此,我尝试了以下内容:

preprocessors: {
    'framework/**/!(node|test)/*.js': 'coverage',
    'framework-lib/**/!(tool-data-api).js': 'coverage'
}
Run Code Online (Sandbox Code Playgroud)

这似乎已经完成了你正在寻找的东西.

作为对来到这里寻找如何定位所有文件EXCEPT .spec.js文件的其他人的说明,请尝试:

'**/!(*spec).js'
Run Code Online (Sandbox Code Playgroud)

这似乎对我有用.


小智 0

确保您要排除的目录/文件未被任何其他包含加载。例如, 'framework/ / .js':'coverage' 将加载您尝试在 '!framework/node/ / .js':'coverage'中排除的文件