тестирование огурцов для проверки родительского элемента с определенным классом - PullRequest
3 голосов
/ 17 февраля 2011

У меня есть элемент с идентификатором: #post, и у этого элемента есть родительский элемент <li>.Теперь я хочу проверить, имеет ли <li> класс .current или нет.Шаг может быть как

Then the element "post" with parent "li" should have class "current"

Если какое-либо тело может помочь мне с step_definitions, это будет gr8!

Ответы [ 3 ]

4 голосов
/ 28 февраля 2011

С помощью webrat вы можете искать селектор CSS.Возможно, это решит вашу проблему:

Then the element "([^"]*)" with parent "([^"]*)" should have class "([^"]*)" do |element_id,parent,css_class|
  response.should have_selector "#{parent} .#{css_class}" do |matches|
    matches.should have_selector element_id
  end
end

Я не пробовал этот код, но он должен работать для вашей цели.

1 голос
/ 20 августа 2011

Эти предложения должны работать для вас, но вы также можете подумать о том, чтобы отделить ваши селекторы от ваших историй, чтобы сделать ваш набор тестов более простым в обслуживании и более выразительным с точки зрения бизнеса. Например: вы можете изменить шаг на что-то вроде:

Then the post should be displayed as the current post

Это становится довольно легко реализовать, если вы используете Pickle :

# /features/posts/viewing.feature
Given the following posts exist:
  | post  | title             | slug              |
  | Lorem | Lorem Ipsum Dolor | lorem-ispum-dolor |
  | Hello | Hello World       | hello-world       |
When I go to the post page for post "Hello"
Then post "Hello" should be displayed as the current post

# /features/step_definitions/post_steps.rb
Then /^#{capture_model} should be displayed as the current post$/ do |post_reference|
  post = model!(post_reference)
  page.should have_css("li.current ##{dom_id(post)}")
end
0 голосов
/ 26 марта 2011

Я использовал это, (который работает):

Then /^"([^\"]*)" should have class "([^\"]*)"$/ do |id, parent_class|
  assert page.has_xpath?('//a[@id="'+id+'"]/..[@class="'+parent_class+'"]')
end
...