ページ内ナビ
概要
WebMockはRubyのHTTP requestをstubし、送信内容に対するexpectationを検証するtesting libraryです。HTTP clientの低い層でrequestをinterceptするため、Net::HTTPを含む複数client libraryでtest codeの考え方を共有できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
実networkへ接続せずHTTP responseをstubする
URIやmethodに対してresponse body・status・headerを定義し、application codeからのHTTP requestへdeterministicなresponseを返せます。
出典:[1]
method・URI・header・bodyを組み合わせてrequestをmatchする
request method、URI、query、header、body、regular expressionなどを条件にし、期待したrequestだけをstubまたは検証できます。
出典:[1]
RSpec・Minitest・Test::Unitなどへ統合する
test framework向けrequire entrypointが用意され、既存Ruby test suiteへ組み込みやすい構成です。複数のHTTP client libraryをsupportします。
出典:[1]
向いている用途
外部APIに依存するunit testを高速かつ再現可能にしたい場合に向く
network遅延、rate limit、外部service停止などからtestを切り離し、application側のrequest生成とresponse処理を検証したい場合に向きます。
出典:[1]
導入前の確認
stubが実serviceのcontractから乖離しないよう別層で検証する
mock responseだけではprovider側のschema・status・authentication変更を検知できません。contract testやintegration testで実serviceとの互換性を別途確認します。
出典:[1]
network遮断とlocalhost許可をtestごとに意図的に設定する
WebMock.disable_net_connect!で外部通信を禁止でき、localhostのみ許可する設定もあります。test suiteで意図せぬreal requestが発生しないようpolicyを明示します。
出典:[1]
参考にした公式資料
- [1]WebMock v3.26.4 README(2026-10-03)
- [2]WebMock v3.26.4 release(2026-10-03)
- [3]WebMock MIT license(2026-10-03)
編集部からの補足
外部APIへ依存するunit testを高速・deterministicにできます。便利な一方、stubが実API契約から古くなる危険があるため、contract/integration testを別層で持ち、WebMockだけで外部連携の正しさを保証しない構成が安全です。
3ステップで試す
- 1
WebMock 3.26.4を導入する
Ruby環境へstable releaseをversion固定で導入します。
gem install webmock -v 3.26.4 - 2
stubだけを使う最小scriptを作成する
example.comへのGETをstub responseへ置き換えるscriptを作ります。real networkへrequestは送られません。
printf '%s\n' 'require "uri"' 'require "net/http"' 'require "webmock"' 'include WebMock::API' 'WebMock.enable!' 'stub_request(:get, "http://example.com/").to_return(body: "stubbed")' 'puts Net::HTTP.get(URI("http://example.com/"))' > webmock_demo.rb - 3
stubbed responseを確認する
stubbedと表示されれば、HTTP request interceptionとresponse stubが動作しています。
ruby webmock_demo.rb
成長
成長の推移 · 直近30日
4,049 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 0
- Open PR
- 27
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Cypress51,043 Stars
共通タグ 1件 · 共通カテゴリ 2件
browser向けE2E・component testをinteractive runnerとCLIから実行する
TypeScript - Appium22,040 Stars
共通タグ 1件 · 共通カテゴリ 2件
WebDriver互換APIでAndroid・iOS・desktop appのE2E testを自動化する
TypeScript - jsdom21,692 Stars
共通タグ 1件 · 共通カテゴリ 2件
Node.js上でDOM・HTML標準のsubsetを再現し、testやscrapingに使う
JavaScript - Mockito15,454 Stars
共通タグ 1件 · 共通カテゴリ 2件
Javaの依存先を模擬し、単体テストを小さく保つ
Java - BenchmarkDotNet11,506 Stars
共通タグ 1件 · 共通カテゴリ 2件
.NET methodを再現性のあるbenchmarkへ変換し、warmup・統計処理・diagnoser・exportを自動化する
C# - RSpec117 Stars
共通タグ 2件 · 共通カテゴリ 2件 · 同じ言語
Rubyの振る舞いをexample・expectation・test doubleで記述し、CLIで実行するBDDテスト基盤
Ruby
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。