Mechanize::File
と Mechanize::Page
クローラー作ったりしてるんですが、RSpecでテストする時に
before(:each) do
@agent = Mechanize.new
stub_request(:get, EXAMPLE_URL).
to_return(:status => 200, :body => EXAMPLE_BODY, :headers => {})
@agent.get(EXAMPLE_URL)
end
とかしてたんですが、何故かundefined method 'links' for #<Mechanize::File:...
とか言われてしまった訳です。
調べてみたところ、Mechanizeは読み込むコンテンツの種類が分からなかった場合はMechanize::Page
ではなくMechanize::File
として読み込むため、@agent.page.links
等が使えなくなるみたいです。
という訳で、ちゃんとヘッダー部分で指定しましょう。
before(:each) do
@agent = Mechanize.new
stub_request(:get, EXAMPLE_URL).
to_return(:status => 200, :body => EXAMPLE_BODY, :headers => {content_type: 'text/html'})
@agent.get(EXAMPLE_URL)
end