0

私はこのようなコードベースをいくつか持っていて、rspec テスト favicon_href を使用したいのですが、好きなように、favicon_href はページ関数を呼び出します。ページ関数をモックできることはわかっていますが、この段階では、指定された URL からの HTTP リクエストをモックしたいと考えています。 、だから私は WebMock gem の構文を使用して HTTP リクエストをスタブしますが、WebMock は Mechanize と互換性がないようです。 Mechanize にリクエストしますか?

コード

  def favicon_href
    @favicon_href ||= 
      begin
        page.at(FAVICON_DOM).attributes['href'].value # finding <link> elements
      rescue Exception
        '/favicon.ico' # there are some situation the favicon's not <link>'
      end
  end

  def page
    @page ||= mechanize.get(url)
  end

  def mechanize
    @mechanize ||= Mechanize.new
  end

エラー

Failure/Error: @page ||= mechanize.get(valid_url(url))

 WebMock::NetConnectNotAllowedError:
   Real HTTP connections are disabled. Unregistered request: GET https://tsaohucn.wordpress.com/ with headers {'Accept'=>'*/*', 'Accept-Charset'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept-Encoding'=>'gzip,deflate,identity', 'Accept-Language'=>'en-us,en;q=0.5', 'Connection'=>'keep-alive', 'Host'=>'tsaohucn.wordpress.com', 'Keep-Alive'=>'300', 'User-Agent'=>'Mechanize/2.7.5 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/)'}

   You can stub this request with the following snippet:

   stub_request(:get, "https://tsaohucn.wordpress.com/").
     with(headers: {'Accept'=>'*/*', 'Accept-Charset'=>'ISO-8859-1,utf-8;q=0.7,*;q=0.7', 'Accept-Encoding'=>'gzip,deflate,identity', 'Accept-Language'=>'en-us,en;q=0.5', 'Connection'=>'keep-alive', 'Host'=>'tsaohucn.wordpress.com', 'Keep-Alive'=>'300', 'User-Agent'=>'Mechanize/2.7.5 Ruby/2.3.1p112 (http://github.com/sparklemotion/mechanize/)'}).
     to_return(status: 200, body: "", headers: {})

   registered request stubs:

   stub_request(:get, "https://tsaohucn.wordpress.com/").
     with(headers: {'Accept'=>'*/*', 'User-Agent'=>'Ruby'})
   stub_request(:any, "http://api.stripe.com/")
   stub_request(:any, "/api.stripe.com/")

   ============================================================
4

1 に答える 1