Redcarpet gem

时间:2018-06-30 21:13:14

标签: ruby markdown rspec-rails redcarpet ruby-on-rails-5.2

我的#markdown中有一个ApplicationHelper方法,我想编写一个简单的单元测试:

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 |红地毯3.4

1 个答案:

答案 0 :(得分:1)

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

要使测试通过,您只需要在字符串中使用双引号\n

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