0

サードパーティの公開Webサイトを読む必要があります。現在、Nokogiriを介してこれを行うことができますが、rspecを使用していくつかの単体テストを作成するのに問題があります。

私はこのHTMLを持っています<div>

<div class="user">
  <div class="name">User Name</div>
</div>

私のReaderモデルにはname、HTMLから名前を読み取るメソッドがあります。

class SampleReader
    def name(html_div)
      html_div.css('name')
    end
end

RSpecテストケースでは、上記のHTML<div>を文字列としてnameメソッドに渡すと、次のエラーが発生します。

undefined method `css' for #<String:0x007fd8a0b39c98>

のこぎりが文字列をHTMLとして識別できないためだと思いますので、誰かがテストケースを書くのを手伝ってくれたら幸いです。そして、可能であれば、私の好みのオプションは、<div>HTMLページのソース全体ではなく、文字列のみをメソッドに渡すことです。

  • Rails3.2.9を使用しています
  • Rspec2
  • のこぎり
4

1 に答える 1

0

HTML 文字列を Nokogiri ドキュメントとしてラップする必要があります。

require 'nokogiri'

str = <<-HTML
<div class="user">
  <div class="name">User Name</div>
</div>
HTML

class SampleReader
  def name(html_div)
    doc = Nokogiri::HTML(html_div)
    doc.css('.name').text
  end
end

reader = SampleReader.new
puts reader.name(str) #=> "User Name"

また、アプリケーションを rails 3.2.11にアップグレードすることを忘れないでください。

于 2013-01-17T20:22:21.210 に答える