我正在寻找一种可靠的方法来在我的开发环境中动态地存根某些方法。一个示例用例是当我需要进行通常需要访问 Facebook Graph API 但我无法访问 Internet 的开发时。我希望能够对 fb_graph 方法的调用存根,这样看起来就好像我已通过身份验证并拥有配置文件数据。理想情况下,我可以通过较小的配置更改来打开或关闭存根。
有任何想法吗?我假设像摩卡这样的东西可以处理这个?
我正在寻找一种可靠的方法来在我的开发环境中动态地存根某些方法。一个示例用例是当我需要进行通常需要访问 Facebook Graph API 但我无法访问 Internet 的开发时。我希望能够对 fb_graph 方法的调用存根,这样看起来就好像我已通过身份验证并拥有配置文件数据。理想情况下,我可以通过较小的配置更改来打开或关闭存根。
有任何想法吗?我假设像摩卡这样的东西可以处理这个?
您可以使用 VCR gem,它将初始 HTTP 请求的结果记录到 yml 文件中,然后在后续 http 请求中使用该 yml 文件的内容。然后可以将其配置为忽略 VCR 逻辑并始终发出 HTTP 请求(如果需要):
摩卡当然可以。但是感觉有点奇怪。
您还可以执行依赖注入之类的操作。
例如:
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