首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得与伊斯坦布尔的CLI nodeJS应用程序的全面覆盖?

如何获得与伊斯坦布尔的CLI nodeJS应用程序的全面覆盖?
EN

Stack Overflow用户
提问于 2017-04-27 12:43:04
回答 1查看 761关注 0票数 2

我正在使用这个配置:伊斯坦布尔/摩卡/柴超/超级测试(用于http测试)/sinon(用于计时器测试),但我在测试CLI工具时遇到了一些问题。

我的问题很简单:如何测试我的cli程序,同时在伊斯坦布尔实现100%的代码覆盖率?无论你使用的是什么工具,我都想了解你是如何做到的!

我发现这篇文章一开始很有帮助,但是

  • 它是在2014年写的
  • 模块mock-utf8-stream似乎不标准。
  • 它没有清楚地解释代码体系结构。

干杯

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-28 09:37:47

这将分两个步骤进行:

  1. 确保您的测试套件已设置为正确生成CLI执行。
  2. 设置nyc (从istanbul切换到下面解释的nyc的原因),以遍历CLI工具后面的脚本文件

设置测试以运行派生子进程

几个月前,我不得不在富尔基上设置了一些CLI测试(这个项目现在暂停了,但它是临时的),并以这样的方式编写了测试套件:

代码语言:javascript
复制
const expect = require('chai').expect;
const spawnSync = require('child_process').spawnSync;

describe('Executing my CLI tool', function () {
  // If your CLI tool is taking some expected time to start up / tear down, you
  // might want to set this to avoid slowness warnings.
  this.slow(600);

  it('should pass given 2 arguments', () => {
    const result = spawnSync(
      './my-CLI-tool',
      ['argument1', 'argument2'],
      { encoding: 'utf-8' }
    );

    expect(result.status).to.equal(0);
    expect(result.stdout).to.include('Something from the output');
  });
});

您可以看到这里的一个例子,但请记住,这是一个与Mocha一起运行的测试文件,在生成的进程中运行Mocha。这里有一点你需要的初始空间,所以它可能会让人感到困惑,但它正在测试一个Mocha插件,从而增加了大脑游戏。这应该适用于您的用例,但如果您忘记了这种复杂性。

设置覆盖范围

然后,您将希望在nyc中安装npm i nyc --save-dev,这是现在伊斯坦布尔的CLI工具,因为与以前的CLI (istanbul本身)不同,它允许覆盖生成子进程的应用程序。好的是它仍然是nyc背后相同的工具、相同的团队等等,所以切换非常简单(例如,参见这一转变)。

package.json中,然后添加到您的scripts

代码语言:javascript
复制
"scripts": {
  "coverage": "nyc mocha"
}

然后,您将得到一个使用npm run coverage的报告(您可能必须在.nycrc中设置reporter选项),该报告也会通过您的CLI脚本。

我还没有在上面提到的项目中设置这个覆盖部分,但是我只是在本地应用了这些步骤,并且它可以像预期的那样工作,所以我邀请您在您的终端上尝试它。

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

https://stackoverflow.com/questions/43658171

复制
相关文章

相似问题

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