下のtwitter apiのようなhttp要求をグローバルスコープでスタブするには、Test :: Unitスイートのすべてのテストに有効ですか?Test :: Unitでhttpリクエストをグローバルにスタブするにはどうすればいいですか?
stub_request(:get, "https://api.twitter.com/1/users/show.json?screen_name=digiberber").
with(:headers => {'Accept'=>'application/json', 'User-Agent'=>'Twitter Ruby Gem 1.1.2'}).
to_return(:status => 200, :body => "", :headers => {})
class MyTest < ActiveSupport::TestCase
setup do
stub_request(...)...
end
end
などのTestCaseのサブクラスのセットアップ()ブロック内のこのWebMockスタブ作品、しかし、私はテストケース自体のグローバル設定の中にそれを置く場合は認識されません。
require 'webmock/test_unit'
class ActiveSupport::TestCase
setup do
stub_request(...)
end
end
私にエラーが表示される:
NoMethodError: undefined method `stub_request' for ActiveSupport::TestCase:Class
また、私は自分自身defで
def self.setup
stub_request(...)
end
の方法にパッチを当てることで試してみたが、それはどちらか動作しません。
WebMockの代わりにFlexMockを使用すると、同様のことが発生します。スコープに問題があるようですが、どうやって回避するのか分かりません。アイデア?セットアップ(に異なる方法で
、申し訳ありませんがちょうど答えが、あなたがテスト::ユニットを使用していることを逃しました。とにかく、FakeWebを見てみましょう。 https://github.com/chrisk/fakeweb – d11wtq
fakewebには同じ問題はありませんか? register_uri()はwebmockのstub_request()と非常によく似ていますので、それをグローバルに実行する必要があります – oliverbarnes
おそらく、HTTPリクエストをクラスまたはモジュールメソッドに抽象化することができます。 –