gpt4 book ai didi

javascript - 如何使用 isparta 从 karma 的代码覆盖范围中排除第三方导入(如 jquery)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:40:39 25 4
gpt4 key购买 nike

我使用 karma、webpack 和 jasmine 来测试我的 ES6 代码,使用 istanbul 和 isparta 来测试代码覆盖率。我的测试似乎都通过了,但覆盖率真的很低,因为我必须导入 jquery 和 jquery-resizable-dom,它们作为未经测试的代码包含在覆盖范围内。

我有很多 vanilla js 代码(~200 行),但后来添加了如下内容:

import $ from 'jquery';
require('imports?jQuery=jquery!jquery-resizable-dom');

const makeImagesResizable = () => {
$('.img').resizable({
handleSelector: '> .glyphicon-resize-full'
});
};

export { makeImagesResizable };

在我的 jasmine 测试中,我导入了 makeImagesResizable 来测试它。当我运行测试时,我得到大约 27% 的代码覆盖率,因为它包括覆盖率中的 jquery 代码。删除上面的整个代码块(jquery 导入和所有使用 jquery 的代码)将覆盖率提高到 94%,这更接近实际覆盖率(jquery 代码非常短)。

有没有办法从代码覆盖率中排除第三方导入以反射(reflect)我们从代码中实际获得的数字?

这也是我的 karma 配置:

const webpack = require('webpack');
const isparta = require('isparta');

module.exports = (config) => {
config.set({
frameworks: ['jasmine'],
files: [
'./spec/*.spec.js',
],
webpack: {
module: {
loaders: [
{ test: /\.js$/, loader: 'imports?define=>false!babel' },
],
},
},
webpackMiddleware: {
noInfo: true,
},
preprocessors: {
'./spec/*.spec.js': ['webpack', 'coverage'],
},
reporters: ['progress', 'coverage'],
coverageReporter: {
instrumenters: { isparta },
reporters: [
{
type: 'html',
dir: 'coverage',
},
],
},
browsers: ['Chrome'],
plugins: [
'karma-webpack',
'karma-jasmine',
'karma-coverage',
'karma-chrome-launcher',
],
});
};

我只包含了测试文件,因为出于某种原因,包含源文件根本没有返回任何覆盖率。

最佳答案

http://karma-runner.github.io/1.0/config/configuration-file.html 引用他们的指南您可以使用 exclude 选项来防止它们影响您的结果。

关于javascript - 如何使用 isparta 从 karma 的代码覆盖范围中排除第三方导入(如 jquery)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41300226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com