【发布时间】:2019-02-27 00:40:33
【问题描述】:
我有一个从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}`) 会产生错误(因为流是单向只读的):
此套接字已关闭
我应该如何解决这个问题?
是跳过命令行集成测试并仅测试doSomething 的唯一选项吗?
【问题讨论】:
-
这在我的情况下没有发生。我只是在 try 块中使用 process.stdout.write 。我做的事情和你做的不一样吗?
-
@Ammar 这与
process.stdout无关。试试process.stdin.write。 -
为什么需要写入标准输入?为什么不能简单地调用该函数? stdin.write 只能在输入流暂停时执行(rl.pause())
-
@Ammar 我需要模拟
'line'事件进行集成测试。 -
这似乎是不可能的。 :(
标签: javascript node.js testing integration-testing jestjs