以下是我的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中,我对如何测试它感到茫然?
有人可以与我分享一些想法吗?
由于
答案 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是空的。调整缩进,您可以使匹配更具体(更快)。