如何测试网络抓取应用程序?

时间:2014-06-06 16:05:22

标签: ruby testing nokogiri

我正在使用Nokogiri检查自动生成的网站是否包含正确的信息和子网站。它有效,但我需要测试它,而且我不确定这样做的好方法。我目前的方法是在网上找到我知道有某些信息的网站,并确保应用程序找到了。

因此,例如,我直观地检查网站上的表中有多少行,然后测试以查看检查该表的函数是否返回该行数。 URL和数字都是硬编码的。该网站可能不会改变,但也不是不可能,在这种情况下,测试显然会失败。

有没有更好的方法呢?

1 个答案:

答案 0 :(得分:1)

为什么不创建一些HTML页面并使用基于Nokigiri的对象打开它们并验证您的假设

# fixture.html
# ... truncated
<table>
  <tr></td>One Row</td></tr>
</table>

class TableScraper
   attr_accessor :document, parser
   def initialize(document, parser)
     @document = document
     @parser   = parser
   end
   def rows_in_table
     # your code here
   end
end

describe TableScraper do
  let(:file) { File.open("/path/to/fixture.html") }
  subject { described_class.new(file, Nokogiri::HTML) }
  it { expect { subject.rows_in_table }.to eq 1 }
end

显然这是一个简单的例子,而不是真正的代码,但这就是我接近它的方式。