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: {})
と指定してあげれば、上記のパラメータ以外のリクエストはモックがないと怒られます。