依赖“事实”是否安全?包内件用于包测试目的?

时间:2015-02-01 19:36:57

标签: testing meteor tinytest

我有一个包{(3}}),它使用observeChanges很多,我想添加一个测试(我现在使用TinyTest),它允许我确保所有这些观察者都被终止结束并且没有跳过handle.stop()

直截了当的方式是:添加“事实”'包(Meteor-internal),订阅' meteor_facts'并使用observe-handles检查项目的_id="mongo-livedata"属性,这不是很安全,因为它全部未记录,并且可以在将来以任何方式进行修改。

是否有更多记录的方法来检查这些事情?

1 个答案:

答案 0 :(得分: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