标签: istanbul

AngularJS html模板的代码覆盖率

我们在业力测试中使用伊斯坦布尔进行代码覆盖.这非常适合跟踪JavaScript中单元测试的代码覆盖率.但是,这不会跟踪HTML模板中的代码覆盖率.

我们的模板中的逻辑非常少,但仍然存在我们想要跟踪的复杂性,并确保我们在测试中正确涵盖了这些复杂性.确保您对所有HTML模板进行适当覆盖的最佳做法是什么?在我们的特定情况下,我们使用ng-if和ng-switch.我们希望确保所有分支都得到适当的覆盖.

html code-coverage angularjs istanbul

8
推荐指数
1
解决办法
1576
查看次数

Karma + Browserify + Jasmine + Istanbul + React报道

我正在尝试获取测试的覆盖率报告,但所有文件的覆盖率输出始终在一行上,显示带有文件路径的require.例如...

在此输入图像描述

然而,测试运行良好.这是一个反应项目,因此我必须在文件和预处理器中包含一些额外的路径以使测试运行.

我不确定我的业力配置是否有问题?这就是我的配置目前的样子......

/* global module */
module.exports = function (config) {
    'use strict';
    config.set({
        autoWatch: true,
        singleRun: true,

        frameworks: ['browserify', 'jasmine'],

        files: [
            'node_modules/karma-babel-preprocessor/node_modules/babel-core/browser-polyfill.js',
            'node_modules/react/react.js',
            'src/**/*.jsx',
            'src/**/!(*spec).js'
        ],

        browsers: ['PhantomJS'],

        preprocessors: {
            'node_modules/react/react.js': ['browserify', 'sourcemap'],
            'src/**/*.jsx': ['browserify', 'sourcemap', 'coverage'],
            'src/**/!(*spec).js': ['browserify', 'sourcemap', 'coverage'],
        },

        browserify: {
            debug: true,
            transform: [ 'babelify' ]
        },

        reporters: ['progress', 'coverage'],

        coverageReporter: {
            instrumenters: {isparta: require('isparta')},
            instrumenter: {
                'src/**/*.js': 'isparta',
                'src/**/*.jsx': 'isparta'

            },
            reporters: [
                {
                    type: 'text-summary',
                    subdir: normalizationBrowserName
                },
                {
                    type: 'lcov', …
Run Code Online (Sandbox Code Playgroud)

browserify ecmascript-6 istanbul reactjs karma-jasmine

8
推荐指数
1
解决办法
1159
查看次数

Grunt代码覆盖不起作用

我有以下grunt文件运行mocha测试OK(我在运行grunt.js后得到测试结果)现在我想添加一个代码,我使用https://github.com/taichi/grunt-istanbul模块.但是当我运行grunt.js什么都没发生时,任何想法?

我想要的只是在mocha测试运行之后它会运行代码覆盖率和一些报告吗?任何新的代码覆盖都会很棒

这是我的项目结构

myApp
 -server.js
 -app.js
 -test
   -test1.spec
   -test2.spec
 -test-reports
 -grunt.js
 -utils
  -file1.js
  -file2.js
 -controller
  -file1.js
  -file2.js
Run Code Online (Sandbox Code Playgroud)

这是我试过的咕噜声中的代码

module.exports = function (grunt) {

    var path = require('path');

    process.env.RESOURCE_PATH_PREFIX = "../";
    var d = new Date();

    var datestring = d.getDate() + "-" + (d.getMonth() + 1) + "-" + d.getFullYear() + " " +
        d.getHours() + ":" + d.getMinutes();

    var npmCommand = path.dirname(process.execPath).concat('/npm');
    var reportDir = "./test-reports/" + datestring;


    grunt.initConfig({
        jasmine_nodejs: {
            // task specific (default) options …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js node.js gruntjs istanbul

8
推荐指数
1
解决办法
1188
查看次数

测试正在通过,覆盖范围未显示

我想nyc avababel所有人在一起好好相处.我有一个问题,async/await分支显示为未覆盖,所以这是有效的,我无法集成babel-plugin-istanbul插件进行测试.

我在项目中有两个文件,src/index.jssrc/test.js.

{
    "name": "example",
    "version": "1.0.0",
    "description": "",
    "main": "index.js",
    "scripts": {
        "test": "ava",
        "coverage": "NODE_ENV=test nyc npm run test",
        "report": "nyc report --reporter=html",
        "report:open": "open ./coverage/index.html",
        "cover": "npm run coverage && npm run report && npm run report:open"
    },
    "keywords": [],
    "author": "",
    "license": "ISC",
    "dependencies": {
        "babel-runtime": "^6.26.0",
        "bluebird": "^3.5.0",
        "lodash": "^4.17.4"
    },
    "devDependencies": {
        "ava": "^0.22.0",
        "babel-cli": "^6.26.0",
        "babel-plugin-istanbul": "^4.1.4",
        "babel-plugin-transform-runtime": "^6.23.0",
        "babel-preset-env": "^1.6.0",
        "babel-register": …
Run Code Online (Sandbox Code Playgroud)

babel istanbul ava nyc

8
推荐指数
1
解决办法
572
查看次数

if-else路径未在角度istanbul代码覆盖率报告中导入

import { Component, OnInit } from '@angular/core';
import { Title } from '@angular/platform-browser';

@Com(I)ponent({
  selector: 'app-fruit-cake',(E)
  templateUrl: './fruit-cake.component.html',
  styleUrls: ['./fruit-cake.component.scss'],
})
expo(E)rt class FruitCakeComponent {
  constructor(private _title: Title) {
    _title.setTitle('Cake');
  }
}
Run Code Online (Sandbox Code Playgroud)

我的代码覆盖率报告显示(E):其他路径未被采用.(I):如果没有采取路径.在import语句和装饰器的上下文中它意味着什么?由于这个原因,我的任何测试中的代码覆盖率都未达到100%.我该如何纠正呢?

code-coverage jasmine istanbul angular

8
推荐指数
2
解决办法
3093
查看次数

如何在测试期间提高 puppeteer 启动性能

我在 Puppeteer 的帮助下编写了一个小型爬虫。现在我面临的挑战是我的测试相当缓慢(每次测试 > 3 秒)。我已经能够将其追踪到launchPuppeteer的功能Istanbul/nyc的使用。

  • 如果我只用 运行测试mocha,测试将在 400 毫秒内完成。
  • 但是如果我另外使用nyc,测试的持续时间超过 3000 毫秒

我正在使用的只是

'use strict';
const puppeteer = require('puppeteer');


module.exports = async function startBrowser() {
  const options = {
    args: [
      // '--no-sandbox',
      // '--disable-setuid-sandbox',
      // '--disable-dev-shm-usage',
      // '--disable-accelerated-2d-canvas',
      // '--disable-gpu'
    ],
    headless: false // true
  };

  return await puppeteer.launch(options);
};
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的测试:

'use strict';
/* global describe: false, before: false, it: false,
    beforeEach: false, afterEach: false, after: false, window: false, …
Run Code Online (Sandbox Code Playgroud)

node.js istanbul nyc puppeteer

8
推荐指数
1
解决办法
8260
查看次数

Jest 测试仅在覆盖范围内失败

我有一个问题,如果我在没有--coverage选项的情况下运行我的测试,一切都会通过,但是一旦我jest使用该--coverage选项运行,我的一些测试就会失败。

这是日志:

Button › Primary button › should render a primary button

  undefined:3:457: property missing ':'

  at Object.it (src/components/Buttons/Button/Button.test.js:13:24)
  at Promise.resolve.then.el (node_modules/p-map/index.js:46:16)
Run Code Online (Sandbox Code Playgroud)

和测试:

it('should render a primary button', () => {
  const props = { primary: true };

  const rendered = renderer.create(<Button { ...props }>Some Button</Button>).toJSON();
  expect(rendered).toMatchSnapshot();
});
Run Code Online (Sandbox Code Playgroud)

失败的线路是 expect(rendered).toMatchSnapshot();

有人有什么想法吗?

istanbul reactjs jestjs create-react-app

7
推荐指数
1
解决办法
1408
查看次数

将 Jest 文本覆盖报告输出到 .txt

Jest 允许您在 package.json 中指定覆盖率报告器,如下所示

{
    ...

    "jest": {
        "coverageDirectory": "./coverage",
        "coverageReporters": ["json", "text", ...]
    }

    ...
}
Run Code Online (Sandbox Code Playgroud)

但是,这仅将.json摘要输出到覆盖目录。它仅将文本版本打印到控制台。有没有办法将文本版本.txt也输出到覆盖文件夹中的文件中?

我一直在参考这里的文档,它说它与任何伊斯坦布尔记者兼容。文本“伊斯坦布尔记者”似乎支持写入文件。有什么办法可以利用它吗?

javascript unit-testing istanbul jestjs

7
推荐指数
1
解决办法
7477
查看次数

如何运行 git pre-commit hook 以强制暂存文件的测试覆盖率不会减少?

我在 ReactJS 项目中使用 jest 和 istanbul 来编写测试用例并检查测试覆盖率。

我如何确保使用预提交钩子来测试我已暂存到 git 的任何文件的测试覆盖率,在提交之前不会从其当前值减少?

git code-coverage istanbul jestjs nyc

7
推荐指数
1
解决办法
3137
查看次数

jest --collect-coverage 将文件标记为 100% 覆盖,即使没有对它们进行测试

我正在尝试玩笑测试的覆盖率功能,但输出显示测试引用的文件的 100% 覆盖率,但根本没有覆盖..大多数情况下它们只是经过测试的模块的依赖项,我还远远没有使用它们的所有导出方法。知道为什么我会收到这种幻影保险吗?感谢您的任何提示

--------------------------------------|----------|----------|----------|----------|-------------------|
File                                  |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
--------------------------------------|----------|----------|----------|----------|-------------------|
All files                             |     6.93 |     5.48 |     3.22 |     7.18 |                   |
 src                                  |    10.11 |    10.53 |     5.88 |    10.11 |                   |
  const.ts                            |      100 |      100 |      100 |      100 |                   |
  utilities.ts                        |      100 |      100 |      100 |      100 |                   |
... etc
Run Code Online (Sandbox Code Playgroud)

utility.ts 有多种导出方法,但尚未测试任何方法,因此被视为 100% 覆盖:/

我没有用谷歌搜索到任何类似的案例。大多数人问为什么他们的测试覆盖率不是 100% :D

code-coverage istanbul jestjs

7
推荐指数
0
解决办法
1945
查看次数