Интеграционное тестирование специальных символов HTML

Как-то странно, но в моих представлениях галочка (✔) и крестик () используются как ссылки (вместо изображений). Есть ли способ найти эти элементы и протестировать их с помощью RSpec и Capybara-webkit, или я должен вместо этого попытаться указать атрибут title и игнорировать этот маршрут?

Мой рассматриваемый тест выглядит так:

context "casting a vote", js: true do
  before do
    sign_in user
    click_link '✔'
    sleep 0.2
  end

  it { should have_content("Vote cast!") }
end

Сообщение об ошибке, которое я получаю (как и ожидалось):

Failure/Error: click_link "raw('✔')"
Capybara::ElementNotFound:
Unable to find link "raw('✔')"

Заранее спасибо за помощь.


person Alex Lynham    schedule 02.12.2013    source источник
comment
Ознакомьтесь с stackoverflow. ком/вопросы/11331060/. Если вы включите # encoding: UTF-8 в начало файла спецификации, вы можете просто вставить галочку или крестик прямо в тест с помощью click_link '✔'.   -  person cschroed    schedule 03.12.2013
comment
Удивительно, спасибо! Просто делает это немного более очевидным, чем page.find(:css, '#vote_link').click!   -  person Alex Lynham    schedule 03.12.2013


Ответы (1)


Capybara не видит HTML, он проходит через DOM, который затем видит фактические значения, которые эти вещи кодируют. Вы должны отправить необработанный код в виде строки UTF-{8,16}, содержащей саму кодовую точку.

Большинство языков представляют HTML '✔' как "\u10004", так что попробуйте.

person Phlip    schedule 02.12.2013