2012-02-04 2 views
0

Ниже мой show.html.haml файл:Некоторое направление при тестировании с помощью has_selector?

%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 

И вот мой спецификации/запросы/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 

Как видно из моего «шоу-страницы», у меня есть селектор «h3», но у меня есть тег «#details», что я думаю, что является причиной моей тестовой провал попытки 'h3. Я не уверен, как добраться до #details, чтобы проверить его? Кроме того, поскольку мой заголовок находится в application_helper, я не понимаю, как проверить его?

У кого-нибудь есть идеи, которые они могут поделиться со мной?

Благодаря

ответ

0

Одна идея: Вы имели в виду использовать: содержание => employee.emp_full_name (Webrat) или: текст => (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 были пустыми. Корректировка отступа, и вы можете сделать соответствие более конкретным (быстрее).

+0

Спасибо @jerseyboy, много работать. – thomasvermaak

Смежные вопросы