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

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

有任何想法吗?我假设摩卡咖啡可以解决这个问题吗?

1
额外 编辑
意见: 1

2 答案

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

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

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
额外