【发布时间】:2018-05-19 07:01:51
【问题描述】:
我一开始就卡住了,只需要 CLI 并捕获它的输出。我尝试了两种方法,但都不起作用。
这是我的 cli.js:
#!/usr/bin/env node
console.log('Testing...');
process.exit(0);
这是我的 cli.test.js:
test('Attempt 1', () => {
let stdout = require("test-console").stdout;
let output = stdout.inspectSync(function() {
require('./cli.js');
});
expect(output).toBe('Testing...');
});
test('Attempt 2', () => {
console.log = jest.fn();
require('./cli.js');
expect(console.log.calls).toBe(['Testing...']);
});
实际上正在运行哪个测试并不重要,输出总是:
$ jest
RUNS bin/cli.test.js
Done in 3.10s.
【问题讨论】:
-
我想这是因为 process.exit。尝试存根。
-
你说的很对,谢谢!这也是我使用指挥官的实际项目中的问题。这一行在这里:github.com/tj/commander.js/blob/…
-
当然……我想我可以简单地使用 outputHelp() 而不是 help()。
-
很高兴它有帮助。我添加了答案,以防其他人遇到同样的问题。