2013-01-17 64 views
0

我有閱讀第三方公共網站的要求。目前我可以通過Nokogiri來完成這項工作,但是我無法使用rspec編寫一些單元測試。使用rspec2和Nokogiri進行單元測試

我有這樣的HTML <div>

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

在我的閱讀模式,我有方法name,從HTML讀取名稱:

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

在我的RSpec的測試案例我傳遞以上HTML <div>作爲name方法的字符串,我得到以下錯誤:

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

我相信這是因爲Nokogiri無法將字符串識別爲HTML,因此如果有人能夠幫助我編寫測試用例,我將不勝感激。而且,如果可能的話,我的首選選項是僅將<div>字符串,而不是整個HTML頁面源傳遞給該方法。

  • 我用Rails 3.2.9
  • Rspec2
  • 引入nokogiri

回答

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" 

而且,別忘了upgrade your application to rails 3.2.11

+0

這個工程,非常感謝:D – sameera207