我想知道如何在rspec中测试find_每个调用.我习惯于简单地截取我希望模型返回的内容,这样我就不会像这样依赖数据库中的测试数据:

MyClass.stub(:find).and_return(my_mock)

然而,在另一节课上,我做的是:

MyClass.find_each do |instance_of_my_class|
  do_stuff_here_on(instance_of_my_class)
end

我发现如果我这样做:

MyClass.stub(:find_each).and_return([one_mock, two_mock])

在规范测试中,"在这里做东西"部分没有被执行.有人知道如何在rspec测试中 for each 查找单元设置存根吗?

推荐答案

您可以使用and_yield使rspec调用传递给mock的块:

MyClass.stub(:find_each).and_yield(one_mock).and_yield(two_mock)

Ruby-on-rails相关问答推荐

使用turbo流的部分渲染在rails 7中不起作用.

将两个日期之间的差值转换为Ruby中的iso8601持续时间(如果需要,还可以使用Rails)

在Rails中,如何将帮助器方法添加到属性/列?

一对多关联 counter_cache 在 Rails 中无法正确重新加载

您如何测试方法调用块内调用的方法,以及使用 rspec 在块内传递给该方法调用的内容

如何在 Ruby on Rails 中正确存储 BigDecimal

Rails:序列化数据库中的对象?

为特定操作使用布局

如何使用 RSpec 和 Devise/CanCan 进行集成测试?

向现有控制器添加操作(Ruby on Rails)

使用 RSpec 和 Capybara (Rails) 测试重定向

rails 3:将链接显示为按钮?

Ruby on Rails 取消首字母大写

在 Nokogiri 中获取属性值以提取链接 URL

Rails data-disable-with re-enable 按钮

Rails 3.1 插件 gem、虚拟测试应用程序、rspec

Rspec:如何在控制器规范中分配实例变量

Rails:一次添加多个 flash[:notice] 的简单方法

Rails: Sprockets::Rails::Helper::AssetNotPrecompiled 在开发中

为什么 Mac OS X 带有 ruby​​/rails?