首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用isparta将jquery等第三方导入排除在业力中的代码覆盖范围之外?

如何使用isparta将jquery等第三方导入排除在业力中的代码覆盖范围之外?
EN

Stack Overflow用户
提问于 2016-12-23 11:04:36
回答 1查看 872关注 0票数 4

我正在使用业力,webpack,和茉莉来测试我的ES6代码,与伊斯坦布尔和伊斯巴达的代码覆盖。我的测试似乎都通过了,但是覆盖率确实很低,因为我不得不导入jquery和jquery-resizable-dom,它们作为未经测试的代码包含在覆盖率中。

我有很多普通的js代码(大约200行),但随后添加了如下内容:

代码语言:javascript
复制
import $ from 'jquery';
require('imports?jQuery=jquery!jquery-resizable-dom');

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

export { makeImagesResizable };

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

是否有办法将第三方导入排除在代码覆盖范围之外,以反映我们从代码中实际获得的数字?

这也是我的业力配置:

代码语言:javascript
复制
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',
    ],
  });
};

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-12-26 22:08:03

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41300226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档