ruby-on-rails - 如何在 rails 3 中 stub find_each 进行 rspec 测试

标签 ruby-on-rails rspec rspec2

我想知道如何在 rspec 中测试 find_each 调用。我习惯于简单地 stub 我希望我的模型返回的内容,因此我不会像这样依赖数据库中的测试数据:

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 测试 stub find_each?

最佳答案

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

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

关于ruby-on-rails - 如何在 rails 3 中 stub find_each 进行 rspec 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382685/

相关文章:

ruby-on-rails - POST 请求在 Heroku 环境中被视为 GET

ruby-on-rails - 将呈现的 HTML 添加到 JSON

ruby-on-rails - 如何从/:id to/:friendly_id重定向

git - 我可以让 RSpec 只运行更改的规范吗?

ruby-on-rails - 如何测试 after_sign_in_path_for(resource)?

ruby-on-rails - 使用 CarrierWave 和 MiniMagick 进行 Rails 裁剪并上传到 S3

ruby - 强制 RSpec 3 显示单行字符串的差异?

testing - Rspec:在 Controller 测试中删除 where 语句

ruby-on-rails - 在 RSpec 中编写请求规范的正确方法是什么?

ruby-on-rails - 我应该如何将 RSpec 与 Rake、Rails 和我现有的测试集成?