我正在为diaspora* 社交网络做出贡献,并且大部分前端代码都是用主干编写的。Jasmine 用于测试该 javascript 代码,我发现根据测试的顺序,它们可能会失败。在测试之间没有正确清理数据。
该项目是开源的,所以让我直接链接代码。
例如,这一行Expected object not to have properties "reshared: 5"
,在测试开始时,有时会失败说,这是该测试的剩余结果,运行之前。
但是,请注意该集合在第二次测试运行之前已正确重置。但是如果你在该行之后放置一个断点,并target.unreadCountByType
在 Firefox 控制台中输入,它将打印Object { reshared: 5 }
. 因此,调用new app.collections.Notifications();
实际上并没有(完全)重置集合。
该集合在此文件中定义,如您所见,已正确初始化 ( unreadCountByType: {}
)。
我认为问题出在这里。在这些行中,userChangedUnreadStatus
每次parse
调用函数时都会完成一个绑定。所以我想这应该在某个时候不受约束,放在这里我的调查被卡住了,因为我不知道骨干是如何工作的。
如果您想在本地运行测试,git clone git@github.com:diaspora/diaspora.git
请使用 生成资产bin/rake tests:generate_fixtures
,使用 启动 jasmine,RAILS_ENV=test bin/rake jasmine
然后使用您的 Web 浏览器访问 http://localhost:8888/?spec=app.collections.Notifications 来运行测试。
欢迎任何帮助!