如何使用 should_receive 规范 ActiveRecord::Base.find(something).method ?

发布于 2024-10-25 12:45:08 字数 346 浏览 1 评论 0原文

假设我们有以下代码:

class Post < ActiveRecord::Base
  def self.fix_published_times
    where(:published => true, :published_at => nil).limit(5).each do |post
      post.fix_published_at!
    end
  end
end

我应该如何规范 Post#fix_published__at! with should_receive?

Let's say we have the following code:

class Post < ActiveRecord::Base
  def self.fix_published_times
    where(:published => true, :published_at => nil).limit(5).each do |post
      post.fix_published_at!
    end
  end
end

How should I spec Post#fix_published__at! with should_receive?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

堇年纸鸢 2024-11-01 12:45:33

类似的事情应该有效:

  mock_posts = [mock("post 1"), mock("post 2")]
  Post.should_receive(:where).with(:published => true, :published_at => nil).and_return(mock_posts)
  mock_posts.each do |mp|
    mp.should_receive(:fix_published_at!).and_return(true)
  end
  Post.fix_published_times

Something along this lines of this should work:

  mock_posts = [mock("post 1"), mock("post 2")]
  Post.should_receive(:where).with(:published => true, :published_at => nil).and_return(mock_posts)
  mock_posts.each do |mp|
    mp.should_receive(:fix_published_at!).and_return(true)
  end
  Post.fix_published_times
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文