Ошибка новой строки для самоцвета Redcarpet - PullRequest
0 голосов
/ 01 июля 2018

В моем ApplicationHelper есть метод #markdown, который я хотел написать простым модульным тестом:

def markdown(text)
  markdown = Redcarpet::Markdown.new(Redcarpet::Render::HTML)
  markdown.render(text).html_safe # tried wihout html_safe too
end

Всякий раз, когда я писал тест RSpec, он продолжал терпеть неудачу. Я попробовал это тремя разными способами:

expect(helper.markdown('# Header')).to eq('<h1>Header</h1>')
# => expected: "<h1>Header</h1>" but got: "<h1>Header</h1>\n"

expect(helper.markdown('# Header')).to eq('<h1>Header</h1>\n')
# => expected: "<h1>Header</h1>\\n" got: "<h1>Header</h1>\n"

expect(helper.markdown('# Header').delete_suffix('\n')).to eq('<h1>Header</h1>')
# => expected: "<h1>Header</h1>" got: "<h1>Header</h1>\n"

Как я могу пройти этот модульный тест?

Ruby 2.5.1 | Rspec 3.7.0 | Рельсы 5.2 | Красная ковровая дорожка 3,4

1 Ответ

0 голосов
/ 01 июля 2018

Последовательность \n анализируется только как escape-код для новой строки, когда она находится между двойными кавычками: "\n". В одинарных кавычках это просто литерал \ и литерал n.

Чтобы пройти тест, вам просто нужно использовать двойные кавычки в строке с \n:

expect(helper.markdown('# Header')).to eq("<h1>Header</h1>\n")
...