webmockでサイト先のデータをstub化する
人のサイトからスクレイピングをしていて、データを毎回テストしている際に、サイトの内容が変更される場合があります。
予期せぬ不具合に対処が打てなくなるので、サイトの内容をstub化してくれるgemがあります。
GitHub - bblimke/webmock: Library for stubbing and setting expectations on HTTP requests in Ruby.
使い方
rspecで使用する場合です。
対象となるファイルにrequire 'webmock/rspec'
で内容を読めるようにします。
これがないと、いつまでも本番のサイトのデータを比較してしまいます。
stub_request(:any, 'www.example.jp'). to_return(body: 'hoge', status: 200, headers: { 'Content-Length' => 3 })
stub_request
で対象となるurlをstub化します。
to_return以降で内容を加えていきます。
open('http://www.example.jp') => #<StringIO:0x007fa66733e338 @base_uri=#<URI::HTTP http://www.example.jp>, @meta={"content-length"=>"3"}, @metas={"content-length"=>["3"]}, @status=["200", ""]> Net::HTTP.get('www.example.jp', '/') => "hoge"
こういう感じできちんと読み込みをしてくれます。
とりあえず、こんなものがあるという紹介です。