開発環境で特定のメソッドを動的にスタブする信頼できる方法を探しています。ユースケースの1つの例は、通常はFacebook Graph APIへのアクセスを必要とする開発を行う必要があるが、インターネットにアクセスできない場合です。fb_graphメソッドの呼び出しをスタブ化して、認証されてプロファイルデータを持っているように見せたいです。理想的には、設定を少し変更するだけでスタブをオンまたはオフにすることができます。
何か案は?モカのようなものがこれを処理できると思いますか?
開発環境で特定のメソッドを動的にスタブする信頼できる方法を探しています。ユースケースの1つの例は、通常はFacebook Graph APIへのアクセスを必要とする開発を行う必要があるが、インターネットにアクセスできない場合です。fb_graphメソッドの呼び出しをスタブ化して、認証されてプロファイルデータを持っているように見せたいです。理想的には、設定を少し変更するだけでスタブをオンまたはオフにすることができます。
何か案は?モカのようなものがこれを処理できると思いますか?
最初のHTTPリクエストの結果をymlファイルに記録し、その後のhttpリクエストでそのymlファイルの内容を使用するVCRgemを使用できます。次に、必要に応じて、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