0

我有一个使用很多的包(yeputons/meteor-smart-publishobserveChanges,我想添加一个测试(我现在使用 TinyTest),它允许我确保所有这样的观察者最终都被终止并且没有handle.stop()被跳过.

直接的方法是:添加 'Facts' 包(Meteor-internal),订阅 'meteor_facts' 并检查observe-handles项目的属性 with _id="mongo-livedata",这不是很安全,因为它都是无证的,可以在未来。

有没有更多记录的方式来检查这些事情?

4

1 回答 1

1

Facts构建包的唯一目的是在管理界面的仪表板中显示一些移动数字。

这是我提出的解决方案,它仍然很老套,但至少可以在不涉及客户端的事实和订阅的情况下实现:

您可以修改 oplog-observe-driver 和 polling-driver 类的构造函数和停止方法。通过使用只调用原始但验证测试中的某些状态的函数包装它们,您可以实现测试目标:

https://github.com/meteor/meteor/blob/cf4477ff27cba9f8a8f63ec2f435969af0b6707c/packages/mongo/oplog_observe_driver.js#L29

https://github.com/meteor/meteor/blob/cf4477ff27cba9f8a8f63ec2f435969af0b6707c/packages/mongo/oplog_observe_driver.js#L853

https://github.com/meteor/meteor/blob/cf4477ff27cba9f8a8f63ec2f435969af0b6707c/packages/mongo/polling_observe_driver.js#L1

https://github.com/meteor/meteor/blob/cf4477ff27cba9f8a8f63ec2f435969af0b6707c/packages/mongo/polling_observe_driver.js#L181

于 2015-02-06T19:21:16.940 回答