Функция огурца / капибары всегда проходит независимо от содержимого страницы - PullRequest
0 голосов
/ 13 февраля 2012

У меня есть следующий сценарий огурца:

Background:
  Given the following roles exist:
  | id | name    |
  | 1  | janitor |
  And the following users exist:
  | username | password   | email               | role_ids |
  | janitor  | Cleaning31 | janitor@example.com | 1        |
  And I am logged in as "janitor" with password "Cleaning31"
  And the following articles exist:
  | id | title       | slug        | content      |
  | 1  | Article One | article-one | Article one. |

Scenario: Seeing link for deleting an article
  When I view the article list
  Then I should see the "Delete" link for article 1

... и определение для этого последнего шага:

Then /^I should (not )?see the "([^"]*)" link (?:in|under|for) article (\d+)$/ do |negation, content, article_id|
  page.should have_selector("\#article_#{article_id}") do |article|
    if negation
      article.should_not have_css('a', text: content)
    else
      article.should have_css('a', text: content)
    end
  end
end

Даже если я изменю слово «Удалить» на «это никогда не должно работать "ни в функции, ни в представлении, функция всегда проходит.В браузере, однако, ссылка «Удалить» правильно отображается только в статьях для пользователей, имеющих роль «уборщик».

Похоже, огурцы «покажи мне страницу» и «покажи мне ответ» не кажутсябыть определенным, несмотря на большое количество статей, предлагающих, что они должны быть.(Мой env.rb )

Другие функции работают, как и ожидалось.Кто-нибудь может определить, где я ошибаюсь?

1 Ответ

3 голосов
/ 14 февраля 2012

Я не вижу утверждений в вашем тесте. Попробуйте изменить article.should_not have_css('a', text: content) на assert article.should_not have_css('a', text: content) и т. Д.

Edit:

Каков результат?

element = page.find("\#article_#{article_id}")
if negation
      element.should_not have_css('a', text: content)
else
      element.should have_css('a', text: content)
end

Имхо, вы должны использовать find helper, а затем делать утверждения на элемент, который вы найдете. Интересно, что у вас в блоке доступно как "статья".

...