我正在使用这个配置:伊斯坦布尔/摩卡/柴超/超级测试(用于http测试)/sinon(用于计时器测试),但我在测试CLI工具时遇到了一些问题。
我的问题很简单:如何测试我的cli程序,同时在伊斯坦布尔实现100%的代码覆盖率?无论你使用的是什么工具,我都想了解你是如何做到的!
我发现这篇文章一开始很有帮助,但是
干杯
发布于 2017-04-28 09:37:47
这将分两个步骤进行:
nyc (从istanbul切换到下面解释的nyc的原因),以遍历CLI工具后面的脚本文件设置测试以运行派生子进程
几个月前,我不得不在富尔基上设置了一些CLI测试(这个项目现在暂停了,但它是临时的),并以这样的方式编写了测试套件:
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中
"scripts": {
"coverage": "nyc mocha"
}然后,您将得到一个使用npm run coverage的报告(您可能必须在.nycrc中设置reporter选项),该报告也会通过您的CLI脚本。
我还没有在上面提到的项目中设置这个覆盖部分,但是我只是在本地应用了这些步骤,并且它可以像预期的那样工作,所以我邀请您在您的终端上尝试它。
https://stackoverflow.com/questions/43658171
复制相似问题