当我发出stdin
readable
事件时,如果我将process.stdin.read
覆盖到模拟中,我会看到以下内容。
process.stdin.on('readable', () => {
console.log('readable emitted')
process.stdin.read()
})
process.stdin.read = (...args) => console.log({msg: 'read fired', args})
process.stdin.emit('readable')
日志:
readable emitted
{ msg: 'read fired', args: [] }
{ msg: 'read fired', args: [ 0 ] }
我试图让这个模拟工作,但是,如果有额外的电话或我没有正确回应这个初始电话,它就不会工作。
const mockStdinRead = (message) => {
const gen = function * () {
yield message
}
const it = gen()
const callerFn = (bool) => {
console.log({bool})
if (bool === 0) return null
const called = it.next().value
console.log({called})
return called || null
}
return callerFn
}
第二次电话有什么责任?