Ruby on rails 如何基于另一个属性值存根类的所有实例的方法/属性?

Ruby on rails 如何基于另一个属性值存根类的所有实例的方法/属性?,ruby-on-rails,rspec,Ruby On Rails,Rspec,要么这根本不存在,要么我看错了 在rspec中,我想存根一个类的所有实例的方法/属性,但前提是该实例符合特定条件,例如: 以下代码将用给定的注释存根所有帖子: Post.any\u instance.stub(:comments.)和\u return([comment1,comment2]) 但是我只想在帖子发布时存根评论,否则我想要一个空白的评论数组 我有没有办法做这样的事情: Post.any_instance.stub(:comments) do |post| post.publis

要么这根本不存在,要么我看错了

rspec
中,我想存根一个类的所有实例的方法/属性,但前提是该实例符合特定条件,例如:

以下代码将用给定的注释存根所有帖子:

Post.any\u instance.stub(:comments.)和\u return([comment1,comment2])

但是我只想在帖子发布时存根评论,否则我想要一个空白的
评论
数组

我有没有办法做这样的事情:

Post.any_instance.stub(:comments) do |post|
  post.published ? [comment1,comment2] : []
end

我见过一些解决方案,其中您向stubbed方法发送一个参数,并根据参数值返回不同的值,但这里不是这样。

您包含的代码应该可以正常工作。中记录了使用块进行存根,但现在不推荐使用它,而是支持中描述的新方法