Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 运行摩卡&x2B;伊斯坦布尔+;巴别塔_Node.js_Mocha.js_Babeljs_Istanbul - Fatal编程技术网

Node.js 运行摩卡&x2B;伊斯坦布尔+;巴别塔

Node.js 运行摩卡&x2B;伊斯坦布尔+;巴别塔,node.js,mocha.js,babeljs,istanbul,Node.js,Mocha.js,Babeljs,Istanbul,我在用摩卡和巴贝尔编译器运行伊斯坦布尔时遇到了一些问题 我的所有测试都运行得很好,但在所有测试完成后,它向我显示以下消息: 未收集到覆盖范围信息,退出时不写入覆盖范围信息 而且它也没有制作任何报道 Im正在运行的命令是: NODE\u ENV=test伊斯坦布尔cover\u mocha--require babel core/register--recursive 该项目位于github中: 有什么想法吗?使用Babel 6.x,假设我们有文件test/pad.spec.js: import

我在用摩卡和巴贝尔编译器运行伊斯坦布尔时遇到了一些问题

我的所有测试都运行得很好,但在所有测试完成后,它向我显示以下消息:

未收集到覆盖范围信息,退出时不写入覆盖范围信息

而且它也没有制作任何报道

Im正在运行的命令是:

NODE\u ENV=test伊斯坦布尔cover\u mocha--require babel core/register--recursive

该项目位于github中:


有什么想法吗?

使用Babel 6.x,假设我们有文件
test/pad.spec.js

import pad from '../src/assets/js/helpers/pad';
import assert from 'assert';

describe('pad', () => {
  it('should pad a string', () => {
    assert.equal(pad('foo', 4), '0foo');
  });
});
安装一堆垃圾:

$ npm install babel-istanbul babel-cli babel-preset-es2015 mocha
创建一个
.babelrc

{
  "presets": ["es2015"]
}
运行测试:

$ node_modules/.bin/babel-node node_modules/.bin/babel-istanbul cover \   
node_modules/.bin/_mocha -- test/pad.spec.js


  pad
    ✓ should pad a string


  1 passing (8ms)

=============================================================================
Writing coverage object [/Volumes/alien/projects/forked/react-flux-puzzle/coverage/coverage.json]
Writing coverage reports at [/Volumes/alien/projects/forked/react-flux-puzzle/coverage]
=============================================================================

=============================== Coverage summary ===============================
Statements   : 100% ( 4/4 )
Branches     : 66.67% ( 4/6 ), 1 ignored
Functions    : 100% ( 1/1 )
Lines        : 100% ( 3/3 )
================================================================================
更新:我成功地使用了
纽约
(它消费
伊斯坦布尔
)而不是
伊斯坦布尔
/
巴贝尔伊斯坦布尔
。这就不那么复杂了。要尝试它:

安装stuff(您可以删除
babel istanbul
babel cli
):

如上所述创建
.babelrc

执行以下命令:

$ node_modules/.bin/nyc --require babel-core/register node_modules/.bin/mocha \ 
test/pad.spec.js
…这会给你类似的结果。默认情况下,它将覆盖率信息放入
.nyc output/
,并在控制台中打印一个漂亮的文本摘要

注意:将命令放置在
package.json
脚本
字段中时,可以从这些命令中删除
node\u modules/.bin/


附言:我现在建议用单人咖啡代替摩卡咖啡/instanbul/纽约/柴/等等。


解决方案A:使用和 设置(不要忘记
@next
对于
nyc
):

npm安装--保存开发人员纽约巴贝尔插件伊斯坦布尔巴贝尔寄存器
将环境添加到
babel
config:

{
  "env": {
    "nyc": { "plugins": ["istanbul"] }
  }
}
{
  "reporter"   : ["text", "text-summary", "lcov", "html"],
  "include"    : ["src/**/*.js"],
  "require"    : ["babel-register"],
  "sourceMap"  : false,
  "instrument" : false,
  "all"        : true
}
nyc
config:

{
  "env": {
    "nyc": { "plugins": ["istanbul"] }
  }
}
{
  "reporter"   : ["text", "text-summary", "lcov", "html"],
  "include"    : ["src/**/*.js"],
  "require"    : ["babel-register"],
  "sourceMap"  : false,
  "instrument" : false,
  "all"        : true
}
PS:
include
字段需要在
package.json的
.nycrc
中指定,如果在命令行中指定,覆盖范围将不起作用

运行测试:

$ node_modules/.bin/babel-node node_modules/.bin/babel-istanbul cover \   
node_modules/.bin/_mocha -- test/pad.spec.js


  pad
    ✓ should pad a string


  1 passing (8ms)

=============================================================================
Writing coverage object [/Volumes/alien/projects/forked/react-flux-puzzle/coverage/coverage.json]
Writing coverage reports at [/Volumes/alien/projects/forked/react-flux-puzzle/coverage]
=============================================================================

=============================== Coverage summary ===============================
Statements   : 100% ( 4/4 )
Branches     : 66.67% ( 4/6 ), 1 ignored
Functions    : 100% ( 1/1 )
Lines        : 100% ( 3/3 )
================================================================================
#1。建造
NODE_ENV=nyc babel src--out dir lib
# 2. 新闻报道
纽约摩卡

解决方案B:没有额外的软件包:只有基本的软件包 最近在伊斯坦布尔()上做了一些工作,用sourcemaps支持Babel生成的代码(请参阅和以获取示例)

有两种方法:

  • A.针对先前传输的代码编写的测试
  • B.针对原始代码编写的测试,并在运行时一起在内存中传输

B1。导出(以前)传输代码的测试 这是分两步完成的:首先,使用babel构建源代码(例如从./src到./out),并根据传输的源代码编写测试(
export foo from“/out/foo”

然后,您将能够使用以下工具运行测试:

伊斯坦布尔封面_mocha--./测试--compilers js:babel register
现在,如果您希望代码覆盖率遵循您编写的原始代码(而不是传输的代码),请确保使用设置为:

babel./src--out dir./out--source映射两者
注:如果需要,您还可以:

伊斯坦布尔封面_mocha--./测试--compilers js:babel register\ --需要babel polyfill\ --需要应该\ --需要西农

B2。直接导出原始代码的测试 在本例中,您根据原始源代码编写测试(
从“/src/foo”
”导出foo),无需进一步步骤,您就可以直接在cli.js上使用babel节点运行伊斯坦布尔:

babel节点。/node_模块/伊斯坦布尔/lib/cli.js封面_摩卡--./测试
注:如果需要,您还可以:

babel节点。/node_模块/伊斯坦布尔/lib/cli.js封面_摩卡--./测试
--需要babel polyfill\
--需要应该\
--需要西农

截至2016年4月17日,此覆盖率报告内容仍然有点混乱,对于我的React项目,它有.jsx文件和一个帮助文件,覆盖率报告脚本如下所示:

istanbul cover node_modules/mocha/bin/_mocha -- \
   --compilers js:babel-core/register \
   --require ./test/testhelper.js  \
   \"test/**/*@(.js|.jsx)\"
因此,这不会太容易伊斯坦布尔的当前版本0.4.3不适用于巴别塔,因此您必须使用实验性的alpha版本:

npm install istanbul@1.0.0-alpha.2 --save-dev
然后您需要
.伊斯坦布尔.yml
-文件,以便伊斯坦布尔能够识别具有以下行的.jsx文件:

instrumentation:
  root: .
  extensions: ['.js', '.jsx']
现在它应该可以工作了。此外,如果您想增加Travis和工作服的承保范围,您应该:

  • 在中启用项目
  • 添加工作服
    npm i工作服--保存开发人员
  • 将此添加到您的
    .travis.yml

    script:
      - npm --silent test
      - cat ./c
    coverage/lcov.info | coveralls
    

  • 现在你可以把这个很酷的徽章放到你的自述中。尼托

    我最近遇到了这个问题-你必须遵循grunt istanbul使用的流程,我相信这是…'instrument“,”mochacli“,”storeCoverage“,”makeReport“(虽然grunt istanbul在这个场景中为您做这件事,而您是从命令行做的)-所以我认为您需要先“instrument”您的文件-不完全确定这意味着什么,但当我在另一个目录中插入时,它会重新创建文件,然后我想你用摩卡来处理那些文件-不是100%确定-但肯定是仪器first@weslley-如果你对我的回答感到满意,你能接受吗?Thank.伊斯坦布尔1.0.0-alpha.2现在允许Babel生成代码,请参阅Thank@boneskull:)现在似乎一切正常!在babel更新之后,我对这些新配置感到困惑。@boneskull您必须使用babel节点吗?
    $babel伊斯坦布尔封面_mocha--R规范--编译器js:babel核心/寄存器
    不够。不适用于我。@cameronjroe最新版本伊斯坦布尔(撰写本文时为v0.4.2)在使用Mocha的
    --编译器
    选项时无法为您的测试提供仪器;您必须使用
    babel节点
    。据我所知,伊斯坦布尔v1.0.0不需要
    babel node
    +1来执行
    nyc
    指令。当没有
    babel istanbul
    和相关模块的神奇组合出现时,我就能够做到这一点