HTTP接続に依存した処理のテスト
HTTP接続に依存した処理をテスト。以下ではwebmockを使っていますが他にもfakewebなどありますね。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 | require 'rubygems' require 'spec' require 'webmock/rspec' require 'open-uri' class HttpClient def initialize(url) @url = url end def fetch_body begin open(@url) { |io| io.read } rescue OpenURI::HTTPError nil end end end describe HttpClient do TEST_URL = 'http://www.example.com/test' before :each do @client = HttpClient.new(TEST_URL) end it 'ステータスコード200の場合はbodyの内容を返すこと' do body = "OK" WebMock.stub_request(:get, TEST_URL).to_return(:body => body, :status => 200) @client.fetch_body.should == body end it '接続できない場合はnilを返すこと' do body = "NG!" WebMock.stub_request(:get, TEST_URL).to_return(:body => body, :status => 404) @client.fetch_body.should be_nil end end |
参考: