title: “ [Gem] Webmock RSpecのWebアクセスのモックを作成してくれる超便利Gem [Rails]”
category: Rails
😼 tags: [Rails, Ruby, Gem]
WebからデータをダウンロードするプログラムのRSpecで、Webにいちいちアクセスしたくない場合に重宝するのが、「Webmock」です。これを使えばある時点のデータを使えるので、テスト結果が更新されて変わるような事態を防ぐことができます!
bblimke/Webmock · GitHub
🎉 Gemのインストール
いつ戻おりGemfile
に以下を追加して、bundle install
を実行してください。
group :test do # HTTP requests用のモックアップを作ってくれる gem 'webmock' end
|
🤔 Webモックの使い方
使い方もいたって簡単です。いつものRSpecファイルに次のような記述を追加を追加。
require "spec_helper" require "webmock/rspec" # これをつけておくとEXAMPLE_SITE_URL以外は普通にWebにアクセス # すべてのhttpリクエストを行わない場合は、下を削除 WebMock.allow_net_connect!
EXAMPLE_SITE_URL = "http://www.iana.org/domains/example/"
describe "" do before do # EXAMPLE_SITE_URL にアクセスしたら EXAMPLE_SITE_BODY を返すスタブを作成 stub_request(:get, EXAMPLE_SITE_URL).to_return({:body => EXAMPLE_SITE_BODY,:status => 200}) @doc = Nokogiri::HTML(open(EXAMPLE_SITE_URL)) @title = @doc.search("title").inner_text end
subject { @title } it { should == "Koreha Example Domain" } end
# テスト用のフィード EXAMPLE_SITE_BODY = <<-eof< span>
Koreha Example Domain
body { background-color: #f0f0f2; margin: 0; padding: 0; font-family: "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;
} div { width: 600px; margin: 5em auto; padding: 3em; background-color: #fff; border-radius: 1em; } a:link, a:visited { color: #38488f; text-decoration: none; } @media (max-width: 600px) { body { background-color: #fff; } div { width: auto; margin: 0 auto; border-radius: 0; padding: 1em; } }
Example Domain This domain is established to be used for illustrative examples in documents. You do not need to coordinate or ask for permission to use this domain in examples, and it is not available for registration. More information... -eof<> |
EOF
もし、興味があればぜひチャレンジしてみてください!
bblimke/Webmock · GitHub
🚕 参考リンク
外部に HTTP アクセスする機能の単体テストで WebMock 使ってみた - present
🍣 変更来歴
01/22 14:55 Gemfileのgroupをdevelopment => testに変更
🖥 VULTRおすすめ
「VULTR」はVPSサーバのサービスです。日本にリージョンがあり、最安は512MBで2.5ドル/月($0.004/時間)で借りることができます。4GBメモリでも月20ドルです。
最近はVULTRのヘビーユーザーになので、「ここ」から会員登録してもらえるとサービス開発が捗ります!