Я заменяю слова в куске контента с помощью помощника рельсов для добавления всплывающих подсказок. Никаких проблем и не работает нормально, но я бы хотел проверить этот помощник на точном выходе и потому что замена добавляет некоторые нежелательные форматирования, мне трудно проверить этот помощник.Письменный тест на сгенерированный текст
исходная строка
a piece of <a href="http://">content</a> that contains jargon1 to be replaced
мой помощник заменяет jargon1 с некоторым HTML для отображения всплывающей подсказки
content.gsub!(/#{jargon.word}/i, get_node(jargon))
def get_node jargon
<<-HTML
<a href='#jargon-#{jargon.id}'
class='jargon-tip'
data-toggle='tooltip'
data-placement='top'
data-original-title='#{jargon.desc}'
rel='help'>#{jargon.word}</a>
HTML
end
результата строки с нагнетаемым HTML
a piece of <a href="http://">content</a> that contains <a href='#jargon-130'
class='jargon-tip'
data-toggle='tooltip'
data-placement='top'
data-original-title='desc for jargon 1'
rel='help'>jargon1</a>
to be replaced
Прежде всего 7 пробелов между that contains
и <a
и i хотел бы, чтобы html отображал inline в результате, но в моем коде мне нравится форматировать, как показано выше, чтобы он был читабельным.
Моей конечной целью было бы построить надежный тест для сравнения анализируемой строки с предварительно определенной строкой. На данный момент я тестирую только часть строки (expect(result).to include("data-original-title='desc for jargon 1'")
) из-за проблем с форматированием с \ n, и это будет хрупкий тест.
Заранее благодарен!
Это лучший способ сделать это, изменил его сразу .. но я все равно хотел бы использовать отступы в строке сравнения в тестовом помощнике. Есть ли способ игнорировать новые строки, созданные в моем значении кода/переменной на выходе? добавленный ('\ n'), когда я вставляю html. Спасибо – Daniel
Да, см. Мой ответ с полосой и gsub. –