как протестировать устаревшую ссылку (или ссылку, по которой я не могу добраться), используя capybara / rspec - PullRequest
2 голосов
/ 24 сентября 2011

Художники не могут оценивать свои собственные работы

it "should display error if voting on own artwork", :js => true do
  sign_in
  visit "/upcoming"
  click_link "like_post_1"
  page.should have_content("Can't vote on your own artwork")
end

Все прошло очень хорошо.

Однако я больше не могу нажимать на like_post_1, потому что я добавил функцию, предотвращающую появление ссылок для голосования рядом с вашими собственными работами.

Означает ли это, что мне больше не нужно тестовое покрытие для этого сценария, потому что крайне редко кто-то может щелкнуть ссылку для голосования для своей собственной работы?Или все еще должен иметь покрытие для проверки ответа ajax, потому что он нигде больше не тестировался, и некоторые устаревшие ссылки могут каким-то образом существовать в окне браузера с вкладками.Если это так ... как я могу проверить это, если я не могу позвонить click_link?

Я мог бы попытаться создать запрос POST для создания голосования, но капибара не поддерживает сообщения, и я не могупротестируйте ответ ajax таким образом ...

Или есть ли способ имитировать просмотр с вкладками в капибаре?

Предложения?

Ответы [ 2 ]

0 голосов
/ 06 декабря 2012

Пожалуйста, попробуйте это:

Используйте функцию sleep .

сон 10 используется для ожидания процесса до 10 секунд ..

it "should display error if voting on own artwork", :js => true do
  sign_in
  visit "/upcoming"
  click_link "like_post_1"
  sleep 10
  page.should have_content("Can't vote on your own artwork")
end
0 голосов
/ 24 сентября 2011

Вы можете использовать отображение CSS: нет или видимость: скрыто для собственной иллюстрации вместо удаления ссылки из DOM.Возможно, вам придется установить

Capybara.ignore_hidden_elements = false

Другим способом является отказ от Capybara и включение их в спецификацию контроллера / модели.Спецификация контроллера / модели может быть лучшим местом для крайне редкого случая или для защиты вашего приложения.

...