标签: nyc

Vue CLI 3-纽约市伊斯坦布尔代码报告不包括Vue文件

我已经尝试了几个小时,以便为我的新vue(基于打字稿的)项目(由vue-cli v3生成)启动并运行伊斯坦布尔代码覆盖率报告。

每当我运行测试时:(nodemon --exec nyc vue-cli-service test:unit)仅包含.ts文件,即使我已明确设置nyc应包括这些文件:

Package.json

"nyc": {
    "check-coverage": true,
    "per-file": true,
    "lines": 80,
    "instrument": true,
    "sourceMap": true,
    "statements": 80,
    "functions": 80,
    "branches": 80,
    "include": [
        "apollo-server/**/*.{ts,vue}",
        "apollo-server/*.vue",
        "src/**/*.{ts,vue}",
        "src/*.vue"
    ],
    "exclude": [
    ],
    "reporter": [
        "lcov",
        "text",
        "text-summary"
    ],
    "extension": [
        ".ts",
        ".vue"
    ],
    "cache": true,
    "all": true
}
Run Code Online (Sandbox Code Playgroud)

我也曾尝试设置nyc.instrumentnyc.sourceMap假以允许像这样的WebPack配置自定义加载器:

Vue.config.js

module.exports = {
baseUrl: process.env.NODE_ENV === 'production'
    ? '/'
    : '/',
configureWebpack: config => {
    // if (process.env.NODE_ENV === "coverage") …
Run Code Online (Sandbox Code Playgroud)

lcov istanbul vuejs2 nyc vue-cli-3

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

如何使用jest使测试覆盖率显示Vue-cli 3中的所有vue文件

我很难用Jest设置Vue CLI 3以显示测试范围。我已竭尽所能使其正常运行,但仍未显示任何内容:

Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | % Branch |  % Funcs |  % Lines | Uncovered Line #s |
----------|----------|----------|----------|----------|-------------------|
All files |        0 |        0 |        0 |        0 |                   |
----------|----------|----------|----------|----------|-------------------|

=============================== Coverage summary ===============================
Statements   : Unknown% ( 0/0 )
Branches     : Unknown% ( 0/0 )
Functions    : Unknown% ( 0/0 )
Lines        : Unknown% ( 0/0 )
Run Code Online (Sandbox Code Playgroud)

以下是我的配置摘录:

jest.config.js:

Ran all test suites.
----------|----------|----------|----------|----------|-------------------|
File      |  % Stmts | …
Run Code Online (Sandbox Code Playgroud)

vue.js jestjs vuejs2 nyc vue-cli-3

7
推荐指数
3
解决办法
4190
查看次数

纽约 + 摩卡 + es6 模块

我正在尝试使用 nyc + mocha 来获取使用 es6 模块语法的单元测试的测试覆盖率。当我运行时mocha my_test.mjs一切正常。my_test.mjs 中的依赖项(使用本机导入)已正确解析。但是当我在这个命令前面加上 nyc:nyc mocha my_test.mjs它不再工作,抛出这个错误:

node_modules/mocha/lib/esm-utils.js:6
    return import(url.pathToFileURL(file));
           ^^^^^^

SyntaxError: Unexpected token import
    at Module._extensions..js (module.js:663:10)
    at Object.replacementCompile (nodejs/core/tests/cache.install.nodejs_install/node_modules/append-transform/index.js:60:13)
    at Module._extensions..js (module.js:663:10)
Run Code Online (Sandbox Code Playgroud)

我尝试了不同的变体nyc --require esm mocha my_test.mjs或强制--experimental-modules使用节点,但似乎没有任何效果。

注意,我使用的是最新版本的node、nyc和mocha

任何想法?

mocha.js node.js nyc

7
推荐指数
2
解决办法
3687
查看次数

nyc (istanbul) 从覆盖率报告中排除测试代码

我正在尝试将覆盖率报告生成添加到打字稿库项目中。

布局包括以下目录:

project
?? src
?  ?? lib      ## project code (typescript), *.tsx
?  ?? test     ## test specs (typescript), *.spec.tsx
?  ?? @types   ## types I made for a few dependencies that didn't have them
?? build
   ?? lib      ## compiled project code (ES5 + type info, with inline sourcemaps), *.js and *.d.ts
   ?? test     ## compiled test specs (ES5 + type info, with inline sourcemaps), *.spec.js and *.spec.d.ts
Run Code Online (Sandbox Code Playgroud)

我有一个测试脚本,package.json它似乎可以正常工作:

    "test": "mocha --reporter mocha-multi --reporter-options mocha-multi=mocha-multi.json --recursive …
Run Code Online (Sandbox Code Playgroud)

code-coverage mocha.js typescript istanbul nyc

6
推荐指数
1
解决办法
2368
查看次数

如何使用 Jest 收集生成的子流程的代码覆盖率?

我正在为 CLI 编写集成测试。所有单元测试都是使用 Jest 编写的,开箱即用,无需任何配置即可生成代码覆盖率,但不幸的是,它不会检测子进程,例如通过 Node 的 spawn 和 fork 命令执行。

我曾尝试按照GitHub 问题上的评论中的建议将纽约引入其中,但它对我不起作用。

我尝试过各种配置(基于上述最初的建议以及这些问题的想法:12),但是我要么根本没有覆盖统计数据,要么只覆盖我的单元测试,而不是生成子的集成测试流程。

my 的相关部分package.json配置了 nyc 和 Jest:

"scripts": {
  "test": "cross-env NODE_ENV=test nyc --clean jest --coverage",
},
"jest": {
  "verbose": true,
  "testURL": "http://localhost/",
  "globalSetup": "./jest.setup.js",
  "transform": {
    "^.+\\.js$": "babel-jest"
  },
  "collectCoverage": false
},
"nyc": {
  "include": [
    "packages/*/src/**/*.js"
  ],
  "reporter": [
    "html"
  ]
},
Run Code Online (Sandbox Code Playgroud)

我用来execa运行子进程并执行以下操作:

await execa("nyc --reporter none node", args);
Run Code Online (Sandbox Code Playgroud)

node.js istanbul jestjs nyc

6
推荐指数
0
解决办法
980
查看次数

TypeScript:在单元测试中找不到模块的声明文件,只有

我在 Windows 10 上使用带有 Visual Studio Code 的 TypeScript 来开发 NPM 模块。我将 mocha/chai 与 nyc (istanbul) 结合使用进行单元测试和代码覆盖。

对于我的一些测试,我想使用 chai-bytes 更容易地比较缓冲区。不幸的是,chai-bytes 模块中没有类型定义文件,@types/chai-bytes 中也没有可用的定义。

因此,我为 chai-bytes 插件编写了自己的类型定义文件(非常简单),但在执行过程中npm test出现以下错误:

TSError: ? Unable to compile TypeScript:
test/utls/BitArray-test.ts(3,23): error TS7016: Could not find a declaration file for module 'chai-bytes'. 'C:/Users/<user>/Source/Repos/velux-api/node_modules/chai-bytes/index.js' implicitly has an 'any' type.
  Try `npm install @types/chai-bytes` if it exists or add a new declaration (.d.ts) file containing `declare module 'chai-bytes';`
test/utls/BitArray-test.ts(48,38): error TS2339: Property 'equalBytes' does not exist on type …
Run Code Online (Sandbox Code Playgroud)

mocha.js node.js chai typescript nyc

6
推荐指数
1
解决办法
2万
查看次数

nyc 相当于伊斯坦布尔命令

我正在尝试将我的istanbul代码覆盖率命令转换为nyc.

现在似乎nyc是 istanbul 测试覆盖率库的命令行界面。

在伊斯坦布尔,我们会得到这样的报道:

istanbul cover foo.js --dir coverage
Run Code Online (Sandbox Code Playgroud)

然后我们会得到一个像这样的综合报告:

istanbul report --dir coverage --include **/*coverage.json lcov
Run Code Online (Sandbox Code Playgroud)

所以我试图确定等效的命令是什么nyc-

要获得 nyc 的报道,我似乎可以这样做:

nyc node foo.js  # writes coverage data to .nyc_output
Run Code Online (Sandbox Code Playgroud)

但是当我查看 .nyc_output 时,有一堆 .json 文件,但它们似乎没有任何数据。

如果我尝试获取报告,请使用

nyc report --reporter=lcov
Run Code Online (Sandbox Code Playgroud)

该报告命令似乎没有做任何事情,.nyc_output目录看起来和以前一样:

在此处输入图片说明

注意我可以使用配置文件并避免在命令行中使用额外的命令。

istanbul nyc

5
推荐指数
1
解决办法
1199
查看次数

如何使用 NYC 获得单元测试和集成测试的组合覆盖率

我想要获得单元测试和集成测试的组合覆盖。

我有单独的单元测试和集成测试文件夹。在我的管道 ci 中,我有一个单独的阶段用于单元测试和集成测试,因为集成测试需要依赖项。

包.json

{
 "unit-test": "nyc mocha --timeout 5000000 -r ts-node/register --project tsconfig.json test/unit/*.test.ts --exit",
 "integration-test": "nyc mocha --timeout 5000000 -r ts-node/register --project tsconfig.json test/integration/*.test.ts --exit",
}
Run Code Online (Sandbox Code Playgroud)

现在我分别收到了他们两个的报道报告,但我可以看到它并不能真实反映所有报道。

有什么办法我可以合并覆盖范围摘要吗?这可能意味着我需要将管道中的两个阶段结合起来?

mocha.js node.js chai istanbul nyc

5
推荐指数
1
解决办法
1580
查看次数

纽约报道称 babel mocha 为空

我正在对mocha我的 js 代码进行单元测试,该代码babel也在使用。我用来nyc做报道。但最终的结果却是显示空。

bash 输出

为什么它显示所有文件 0 即使我的测试文件需要redux.jsnumber-reducer.js文件?

我的 package.json 中的测试脚本是

{
  ...
  "scripts": {
    ...
    "test": "cross-env NODE_ENV=test npm run lint && nyc --reporter=lcov --reporter=text mocha",
    "coverage": "nyc report --reporter=text-lcov | coveralls"
  },
   ...
  "devDependencies": {
    "@babel/core": "~7.3.4",
    "@babel/preset-env": "~7.3.4",
    "@babel/register": "~7.0.0",
    "babel-loader": "~8.0.5",
    "babel-plugin-istanbul": "~5.1.1",
    "babel-polyfill": "~6.26.0",
    "chai": "~4.2.0",
    ...
    "cross-env": "~5.2.0",
    "eslint": "~5.15.0",
    "mocha": "~6.0.0",
    "nyc": "~13.3.0",
    ...
    "webpack": "~4.29.4",
    "webpack-cli": "~3.2.1"
  },
  "nyc": {
    "require": [
      "@babel/register"
    ], …
Run Code Online (Sandbox Code Playgroud)

javascript mocha.js webpack babeljs nyc

5
推荐指数
0
解决办法
823
查看次数

Angular + Cypress 代码覆盖率报告不起作用

我一直在尝试让 Cypress 代码覆盖率与我的 Angular 生产项目一起使用,但没有成功。

为了尝试帮助诊断它,我创建了一个最小的实施项目,以确保我没有在生产版本中引入任何奇怪的东西,我不认为我是这样,因为同样的问题仍在发生。它开始让我发疯了!

我使用了一些参考资料,据我所知,我已经准备好了所需的东西:

据我所知,Angular 和 Cypress 端都已连接,并且正在 .nyc_output 文件夹中获取输出和覆盖率报告。然而,该报告并未表明打字稿行覆盖率或包括这些统计数据。

在此输入图像描述 在此输入图像描述

我看过这个,但似乎没有帮助。

代码检测(webpack扩展+ angular.json):

module.exports = {
  module: {
    rules: [
      {
        test: /\.(js|ts)$/,
        loader: "istanbul-instrumenter-loader",
        options: { esModules: true },
        enforce: "post",
        include: require("path").join(__dirname, "..", "src"),
        exclude: [
          /\.(e2e|spec)\.ts$/,
          /node_modules/,
          /(ngfactory|ngstyle)\.js/,
        ],
      },
    ],
  },
};
Run Code Online (Sandbox Code Playgroud)
"serve": {
  "builder": "ngx-build-plus:dev-server",
  "options": {
    "browserTarget": "architecture-testing:build",
    "extraWebpackConfig": "./cypress/coverage.webpack.js",
    "sourceMap": true
  },
  "configurations": {
    "production": {
      "browserTarget": "architecture-testing:build:production"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

Cypress 似乎正在记录并保存报道:

const registerCodeCoverageTasks …
Run Code Online (Sandbox Code Playgroud)

code-coverage istanbul angular nyc cypress

5
推荐指数
1
解决办法
4230
查看次数