コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

WebMockでリクエストの値そのものも見たいときはwithに内容を指定する

WebMock入ってる環境でrspecを実行すると勝手に出てくるサンプル例に出てくるけど紹介

環境

webmock (3.4.2)

書き方

通常モックをさせる場合以下の感じで書くと思います。

stub_request(:post,"https://example.com/post_endpoint")
.to_return(status: 200, body: {"body":"成功時に帰ってくるbody"}.to_json, headers: {})

一応このように書けば https://example.com/post_endpoint に POSTすると、自動的に to_return のbodyで指定したものが返ってきます。

ただ、特定のリクエストを送ったときだけダミーのレスポンスを返して、ほしいときは

with(body: {{指定してほしいリクエストパラメータ}}

みたいな形で指定できます。

例えば {"param":"Something"} みたいなJSONをPOSTしたときだけモックが動いてほしいときは…

stub_request(:post,"https://example.com/post_endpoint")
.with(body: "{\"param\":\"Something\"}",)
.to_return(status: 200, body: {"body":"成功時に帰ってくるbody"}.to_json, headers: {})

と指定してあげれば、上記のパラメータ以外のリクエストはモックがないと怒られます。

関連リンク