ホーム > 今日のテストコード > HTTP接続に依存した処理のテスト

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

参考: