Redcarpet gem 的换行错误

New line error for Redcarpet gem

我的 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 | Rails 5.2 | Redcarpet 3.4

序列 \n 仅在双引号之间时被解析为换行符的转义码:"\n"。在单引号中,它只是一个文字 \ 和一个文字 n.

要让测试通过,您只需在 \n:

字符串中使用双引号
expect(helper.markdown('# Header')).to eq("<h1>Header</h1>\n")