gpt4 book ai didi

ruby-on-rails - 测试 Redcarpet Markdown 助手

转载 作者:太空宇宙 更新时间:2023-11-03 16:34:31 26 4
gpt4 key购买 nike

我在 application_helper.rb 中有一个看起来像这样的 Markdown 助手。

你会如何为这样的事情编写测试?另外,这是从 Markdown 生成简单 HTML 的最佳方式吗?

谢谢!

def markdown(text)
Redcarpet::Markdown.new(Redcarpet::Render::HTML, :autolink => true, :space_after_headers => true).render(text).html_safe
end

最佳答案

我想到了两个选项:

  1. 去掉 Redcarpet::Markdown 并创建它应该接收的期望:

    expect(Redcarpet::Markdown).to receive(:new).with(...) # `with` args omitted for brevity
    markdown(text)

    这里的问题是方法和测试的耦合度很高。在不破坏测试的情况下重构方法是非常困难的,即使该方法实际上功能相同。

  2. 直接断言输出文本的正确性:

    expect(markdown(text)).to eq 'This is markdownified'

    这可以让你更好地重构,但它看起来更像是一个集成测试,而不是单元测试,而且几乎是在测试 Redcarpet 而不是你自己的方法。单元测试通常应该假定它们调用的外部方法正常工作。

这是我觉得测试多余的情况之一,因为该方法只是另一个方法的薄包装,我不反对不对其进行单元测试,而是确保您有一个集成测试——如果这是通过让您的规范成为集成测试,那可能没问题。

不过,这最终完全取决于您和您的 TDD 工作流程以及总体测试原则。

关于ruby-on-rails - 测试 Redcarpet Markdown 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9809586/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com