我有一个命令行应用程序,可从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}`)
的唯一选择吗?
答案 0 :(得分:0)
readline
库是EventEmitter
之上的附加层
鉴于EventEmitter
是具有自己的测试覆盖范围的节点核心模块,而readline
是具有其自己的测试覆盖范围的模块-我将依靠它,而不必担心那里匹配的错误。
我只会编写测试以覆盖代码中的逻辑,在此示例中,doSomething();