使用have_selector进行测试的一些方向?

时间:2012-02-04 19:15:18

标签: ruby rspec2

以下是我的show.html.haml文件:

%h3
  = gravatar_for @employee
  %p
  #details
  = @employee.emp_full_name
  #spacing
  = @employee.email

接下来,这是我的application_helper文件,它定义了标题:

module ApplicationHelper

def logo
 logo = image_tag("rails.png", :alt => "Time and it's Cost", class:  "round")
end

# Return title on a per-page basis.
def title
  base_title = "Time and it's Cost"
  if @title.nil?
    base_title
  else
    "#{base_title} | #{@title}"
  end
 end
end

而且,这是我的spec / requests / employee_pages_spec文件:

require 'spec_helper'
describe "Employee pages" do
  subject { page }
    describe "employee show page" do
    let(:employee) { FactoryGirl.create(:employee) }
    before { visit employee_path(employee) }

    it { should have_selector('h3',  employee.emp_full_name) }
    it { should have_selector('title',  text: employee.emp_full_name) }
    end
end

从我的'show page'可以看出,我有一个'h3'选择器,但我也有'#details'标签,我认为这是我'h3'测试失败的原因。我不确定如何到#details进行测试?此外,由于我的标题是在application_helper中,我对如何测试它感到茫然?

有人可以与我分享一些想法吗?

由于

1 个答案:

答案 0 :(得分:0)

一个想法:你的意思是使用:content => employee.emp_full_name(webrat)或:text => (capbybara)在调用have_selector?

这是另一个想法:h3可以包含元素的混合,但它不是很正常,p元素通常不是空的。

仅举例说明,我们可以转到http://haml-lang.com/try.html并输入: (不使用=,因为它没有在该网站上进行内联红宝石评估)

%h3
  "gravatar_for employee"
  %p
  #details
  "employee.emp_full_name"
  #spacing
  "employee.email"

我们得到了这个:

<h3>
  "gravatar_for employee"
  <p></p>
  <div id='details'></div>
  "employee.emp_full_name"
  <div id='spacing'></div>
  "employee.email"
</h3>

您可以通过将名称包含在span元素中和/或修复标记来使选择器更具体。我假设你并不是说div或p是空的。调整缩进,您可以使匹配更具体(更快)。