如何在Rails开发环境中存根?

时间:2012-05-25 06:23:20

标签: ruby-on-rails ruby

我正在寻找一种在我的开发环境中动态存根某些方法的可靠方法。一个示例用例是当我需要进行开发时,通常需要访问Facebook Graph API但我没有Internet访问权限。我希望能够将调用存根到fb_graph方法,因此看起来好像我已经过身份验证并拥有配置文件数据。理想情况下,我可以通过微小的配置更改打开或关闭存根。

有什么想法吗?我假设mocha可以处理这个问题吗?

2 个答案:

答案 0 :(得分:1)

摩卡当然可以做到。但感觉有点奇怪。

您还可以执行依赖注入等操作。

例如:

class User < AR::Base

  def find_friends
    Facebook.find_friends(facebook_id)
  end

end

class Facebook

  def self.find_friends(id)
    # connect to Facebook here
  end

end

class FakeFacebook

  def self.find_friends(id)
    # a fake implementation here
  end

end

在初始化程序中:

if Rails.env.development?
  User::Facebook = FakeFacebook
end

答案 1 :(得分:1)

您可以使用VCR gem,它将初始HTTP请求的结果记录到yml文件中,然后在后续的http请求中使用该yml文件的内容。然后可以将其配置为忽略VCR逻辑并始终发出HTTP请求(如果需要):

https://www.relishapp.com/myronmarston/vcr