【发布时间】:2011-08-20 00:33:40
【问题描述】:
目前正在为我的模型编写一些测试。 我有一个名为 Blog 的模型,当用户创建博客时,观察者会向用户的新闻源发布消息。 我的一项测试测试正在执行此操作。然而,这个测试在测试环境中失败了,在控制台中做同样的事情完美无缺,这让我相信 rspec 正在快速行动,而不是等待观察者完成它的事情。有什么办法可以解决这个问题?我试过睡眠,但似乎不起作用。
这是一般设计。
博客已创建 观察者注意到并创建一个新的 Newsfeed 并传递新的 Blog 对象 创建时的新闻源被触发,它通过调用 Blog 对象上的方法来获取正确的新闻源消息。 Newsfeed 将博客添加到它的 newsfeed_items 列表并保存自己。
规范失败是因为它没有等待观察者完成它的任务并调用它的 after 方法有效地删除了对象,然后新闻源对象才能从它那里获取消息。
【问题讨论】:
-
有没有想过这个?我发现观察者钩子调用一次,然后再也不会......
标签: ruby-on-rails rspec observer-pattern