在测试中没有调用可读流`_read`

时间:2018-03-30 11:50:02

标签: ava node-streams

我有以下简化的ava测试用例。当我通过ava _read()运行它时,永远不会被调用(ONDATA可以)。另一方面,当我将此测试体(没有断言)作为节点脚本运行时,我总是按预期调用_read()。 可能我会错过一些关键功能,请咨询。

test('...', async t => {
  class R extends stream.Readable {
    _read() { console.log('READ'); }
  }
  const rs = new R();

  rs.on('data', data => {
    console.log('ONDATA ', data.toString());
  });
  rs.push(Buffer.from('data'));
  // t.is(...)
})

2 个答案:

答案 0 :(得分:0)

我无法立即回想起应该调用_read()的情况,但很可能你的测试在此之前结束。您进行了async测试,但似乎没有await任何内容。尝试返回明确的承诺或以其他方式使用test.cb(),以便您可以使用t.end()结束测试。

答案 1 :(得分:0)

谢谢!基本上我搞砸了可读的流回调和async test。所需的测试看起来像

test.cb('...', t => {
  class R extends stream.Readable {
    _read() {
      console.log('READ');
      // t.pass() or t.end() HERE
    }
  }
  const rs = new R();

  rs.on('data', data => {
    // t.pass() or t.end() HERE
    console.log('ONDATA ', data.toString());
  });
  rs.push(Buffer.from('data'));
})