0

我有以下简化的 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(...)
})
4

2 回答 2

0

我无法立即回忆起_read()应该在什么情况下调用,但很可能您的测试在此之前就结束了。你有一个async测试,但你似乎await什么都没有。尝试返回一个明确的承诺或以其他方式使用test.cb(),以便您可以使用t.end().

于 2018-04-01T16:39:40.797 回答
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'));
})
于 2018-04-04T07:35:26.910 回答