clips で webmock を使って Github API との通信部分をスタブしたのだけど、このスタブ定義をすべての example に適用させた時の記録。または shared_context をすべての example に適用する方法。
参考
結果
- clips/spec/spec_helper.rb at master · tanaka51-jp/clips · GitHub
- clips/spec/support/stub_http_request.rb at master · tanaka51-jp/clips · GitHub
やり方
(というかほぼ参考にしたページの日本語約)
まず、’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