Events 在验收测试中,我如何知道异步事件何时发生?

Events 在验收测试中,我如何知道异步事件何时发生?,events,node.js,cucumber,acceptance-testing,Events,Node.js,Cucumber,Acceptance Testing,所以这里有一个难点——我有一个系统,当一个事件发生时,它会触发一系列不同的异步代码(有些代码甚至会触发更多的事件) 现在在验收测试期间,我触发了相同的事件——但是应该使用什么策略来通知测试运行者所有后续事件都已完成并准备好进入下一步 我一开始只是在等固定的时间,但我觉得那只是一种敷衍。 现在,我正在关注尾声事件,当它们全部结束时继续。但我可以看到这变成了v。随着系统的发展变得越来越复杂 只是想知道是否有我错过的替代策略。有什么建议吗 FWIW我正在使用&来测试应用程序 干杯,谢谢你抽出时间 Go

所以这里有一个难点——我有一个系统,当一个事件发生时,它会触发一系列不同的异步代码(有些代码甚至会触发更多的事件)

现在在验收测试期间,我触发了相同的事件——但是应该使用什么策略来通知测试运行者所有后续事件都已完成并准备好进入下一步

我一开始只是在等固定的时间,但我觉得那只是一种敷衍。 现在,我正在关注尾声事件,当它们全部结束时继续。但我可以看到这变成了v。随着系统的发展变得越来越复杂

只是想知道是否有我错过的替代策略。有什么建议吗

FWIW我正在使用&来测试应用程序

干杯,谢谢你抽出时间


Gordon

显然,解决方案会因应用程序而异,但我发现构建应用程序的方式很有帮助,因为顶级异步函数的回调会一直跟踪到最后。完成所有顶级回调后,您可以触发一些事件或调用指示一切结束的回调。使用类似的方法,您可能会执行以下操作:

eventEmitter.on('someEvent', function(some, data, callback) {
  async.parallel([
    function(cb) { firstAsyncThing(some, cb); },
    function(cb) { secondAsyncThing(data, cb); }
  ], function(err, results) {
    // called when all functions passed in the array have their `cb` called
    callback(err, results);
  });
});
因此,您可以将回调传递到事件中:

eventEmitter.emit('someEvent', 'some', 'data', function(error, results) {
  // the event has been fully handled
});

平行线看起来很有用——我来试一试。我将开始通过事件链传递回调,然后看看结果如何。谢谢