rspec の shared_context をすべての example に適用する

Dec 14, 2012  

clipswebmock を使って Github API との通信部分をスタブしたのだけど、このスタブ定義をすべての example に適用させた時の記録。または shared_context をすべての example に適用する方法。

参考

結果

やり方

(というかほぼ参考にしたページの日本語約)

まず、’RSpec.configure’ 内で、すべての example に適用させる before を定義できる。 だけど、let だとか RSpec の DSL は ‘RSpec.configure’ 内では使えない。だから、’RSpec::Core::SharedContext’ を extend した module をつくって、configure 内ではその自作 module を include させるようにすると良い。

で、具体例。

# spec/spec_helper.rb
RSpec.configure do |config|
  config.include StubHttpRequest
end
# spec/support/stub_http_request.rb
require 'rspec/core/shared_context'

module StubHttpRequest
  extend RSpec::Core::SharedContext

  before do
    stub_request(:any, /.*api\.github\.com.*/).
      to_return(:status => 200, :body => "", :headers => {})
  end
end