NodeJS在Jest测试中写入标准输入

时间:2018-09-23 06:04:54

标签: javascript node.js testing integration-testing jestjs

我有一个命令行应用程序,可从MainProject读取用户输入:

stdin

要编写集成测试,我需要能够写到const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, }); rl.on('line', (line) => { doSomething(); }); 来激活stdin事件。但是,在我的测试用例中调用'line'会产生一个错误(因为流是单向只读的):

  

此套接字已关闭

我应该如何解决?

是跳过命令行集成测试并仅测试process.stdin.write(`abc${os.EOL}`)的唯一选择吗?

1 个答案:

答案 0 :(得分:0)

readline库是EventEmitter之上的附加层

鉴于EventEmitter是具有自己的测试覆盖范围的节点核心模块,而readline是具有其自己的测试覆盖范围的模块-我将依靠它,而不必担心那里匹配的错误。

我只会编写测试以覆盖代码中的逻辑,在此示例中,doSomething();