ruby-on-rails - Rspec allow_any_instance_of 返回实例 ID

标签 ruby-on-rails ruby ruby-on-rails-3 rspec rspec-rails

有没有可能做这样的事情???

allow_any_instance_of(Object).to receive(:foo).and_return("hello #{instance.id}")

我可以根据实例返回消息吗?

最佳答案

是的,使用匹配器的“ block ”形式,它使您可以访问实例作为 block 的形式参数。您还需要确保 Object(或您传递给 allow... 的任何类)实现了 :foo(或您要传递的任何方法)正在指定) 作为实例方法,否则 allow... 将引发错误。同样,当然,您需要确保 id 也已实现。

下面是一些使用 Object 本身的示例代码:

class Object
  def id
    'bar'
  end
  def foo
  end
end
describe '' do
  it '' do
    allow_any_instance_of(Object).to receive(:foo) { |o| "hello #{o.id}" }
    puts Object.new.foo
  end
end

关于ruby-on-rails - Rspec allow_any_instance_of 返回实例 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34109054/

相关文章:

ruby-on-rails - Capistrano 中的 "role"到底是什么?

c++ - 多次调用 ruby​​_init 和 ruby​​_finalize

ruby-on-rails - 在 Rails 3 中,如何在请求/响应周期完成后通过 Controller 调用一些代码?

ruby-on-rails - 是否可以在 Heroku 上使用修改 nginx 配置文件并使用 X-Accel-Redirect?

ruby-on-rails - 编码未定义的转换错误 - Ruby on Rails,写入错误

ruby-on-rails - Rails 嵌套单一资源路由

ruby-on-rails - 写入缓存与写入数据库 - 性能基准?

ruby-on-rails - html erb 中的 Rails 循环

mysql - 向具有 7500 条非唯一记录的 MySQL 数据库添加 UNIQUE 约束

javascript - 如何强制 Showoff 不向 .content div 添加 margin-top