【问题标题】:Rspec and observers in railsRails 中的 Rspec 和观察者
【发布时间】:2011-08-20 00:33:40
【问题描述】:

目前正在为我的模型编写一些测试。 我有一个名为 Blog 的模型,当用户创建博客时,观察者会向用户的新闻源发布消息。 我的一项测试测试正在执行此操作。然而,这个测试在测试环境中失败了,在控制台中做同样的事情完美无缺,这让我相信 rspec 正在快速行动,而不是等待观察者完成它的事情。有什么办法可以解决这个问题?我试过睡眠,但似乎不起作用。

这是一般设计。

博客已创建 观察者注意到并创建一个新的 Newsfeed 并传递新的 Blog 对象 创建时的新闻源被触发,它通过调用 Blog 对象上的方法来获取正确的新闻源消息。 Newsfeed 将博客添加到它的 newsfeed_items 列表并保存自己。

规范失败是因为它没有等待观察者完成它的任务并调用它的 after 方法有效地删除了对象,然后新闻源对象才能从它那里获取消息。

【问题讨论】:

  • 有没有想过这个?我发现观察者钩子调用一次,然后再也不会......

标签: ruby-on-rails rspec observer-pattern


【解决方案1】:

观察者不是异步的(当然,除非您在观察者回调中排队异步作业)。观察到的模型本身就是回调方法的发送者。您的观察者似乎更有可能没有在您的测试中观察。

你遇到过这个话题吗?有没有用?
How would you test observers with rSpec in a Ruby on Rails application?

【讨论】:

  • 观察者就是观察者,有些模型有效,有些模型无效。它的周围很奇怪。
猜你喜欢
  • 2016-04-10
  • 2012-02-15
  • 1970-01-01
  • 2013-07-22
  • 2015-11-04
  • 2016-08-26
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
相关资源
最近更新 更多