0

在我当前的应用程序中,我有一个模块可以从外部网站读取(提取)HTML。例如说我正在提取以下 div

<div class='sample'>
  <p class="name">Jhon Smith</p>
  <div class="address">
    No30, 5th Street,
    Home Town 
  </div>
</div>

而且我有阅读方法

  • 1 - 名称
  • 2 - 地址

前任 :def name(htmlDiv) -> return "Jhon Smith"

def address(htmlDiv) -> return " No30, 5th Street,Home Town "  

我的问题是如何使用 rspec 对这些方法进行单元测试?我的想法是做如下

  • 在 spec/factories 目录中有上述 html 的字符串
  • 在 spec/lib/*_spec.rb 中有一个包含上述方法的规范文件
  • 读取字符串并作为参数传递给 div

    1. 那么这种方法是否正确?
    2. 当涉及到 html 页面阅读时,还有其他简单/有条理的测试方法吗?

我上线了

  • Rails3
  • 雷柏2.0
  • 小切
  • 休息客户端
4

1 回答 1

0

在进行单元测试时,我会“存根”这个 HTML:

describe MyExtractor do
 let(:raw_html) { "<div>...</div>" }
 let(:name) { 'John' }
 let(:address) { 'Something' }

 subject { described_class.new(raw_html) }

 its(:name) { should eq name }
 its(:address) { should eq address }
end

您可以从中提取特定context的 s(当 HTML 格式错误、何时为空白、没有地址时等)来测试边缘案例(稍后您可以为此提取共享示例)。

稍后您可以进行集成测试,当您将提供此 HTML 以从“真实”源(可能再次使用 webmock 或其他东西存根)进行解析时。

于 2012-12-08T10:26:49.613 回答