Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript NodeJS在jest测试中写入stdin_Javascript_Node.js_Testing_Integration Testing_Jestjs - Fatal编程技术网

Javascript NodeJS在jest测试中写入stdin

Javascript NodeJS在jest测试中写入stdin,javascript,node.js,testing,integration-testing,jestjs,Javascript,Node.js,Testing,Integration Testing,Jestjs,我有一个命令行应用程序,可以从stdin读取用户输入: const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, }); rl.on('line', (line) => { doSomething(); }); 要编写集成测试,我需要能够写入stdin以激活'line'事件。但是,在我的测试用例中调用process.stdin.write(

我有一个命令行应用程序,可以从
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
的唯一选项?

readline库是
EventEmitter
之上的附加层

给定
EventEmitter
是节点核心模块,它有自己的测试覆盖范围,而
readline
有自己的测试覆盖范围-我将依靠这一点,不必担心匹配的bug


我只会编写测试来覆盖代码中的逻辑,
doSomething()
在本例中

在我的案例中不会发生这种情况。我只是在try块中使用process.stdout.write。我是否做了一些与您所做的不同的事情?@Ammar这与
process.stdout
无关。尝试
process.stdin.write
。为什么需要写入stdin?为什么你不能简单地调用这个函数呢?只有在输入流暂停时才能执行stdin.write(rl.pause())@Ammar我需要模拟集成测试的
'line'
事件。这似乎是不可能的:(