Какое-то направление по тестированию с have_selector? - PullRequest
0 голосов
/ 04 февраля 2012

Ниже приводится мой файл 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 / запросы / 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 голосов
/ 05 февраля 2012

Одна идея: вы хотели использовать: content => employee.emp_full_name (webrat) или: text => (capbybara) в вызовах have_selector?

Вот еще одна идея: h3 может содержать смеси элементов, но это не совсем нормально, а p-элементы обычно не пусты.

Только для иллюстрации, мы можем перейти на http://haml -lang.com / try.html и ввести это: (не используется =, поскольку он не выполняет встроенную оценку ruby ​​на этом сайте)

%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 пустые. Регулируя отступ, вы также можете сделать сопоставление более конкретным (более быстрым).

...