ruby-on-rails - 如何测试目录?

标签 ruby-on-rails testing tdd

我有一个方法助手,它读取文件和目录并构建 html View 。像这样:

def build_segment(path)
    html = ""
    Dir.new(path).each do |f|
      next if f == "." or f == ".."
      html << "<li>"
      if File.ftype(f) == 'directory'
        html << "<span class=folder>#{h(f.to_s)}</span>"
        html << "<ul>"
        html << build_segment(Dir.new(f))
        html << "</ul>"
      elsif File.ftype(f) == 'file'
        html << "<span class=file>#{h(f.to_s)} </span>"
      end
      html << "</li>"
    end
    html
  end

通常我们使用模拟对象来测试一些方法——发送一个假对象到测试方法。 但这是真正的文件系统。我只能发明一种变体——在操作系统上创建假文件,然后测试该方法。

有没有更简洁、更聪明的方法来测试这个方法?谢谢

最佳答案

您遇到的困难是因为您的代码耦合度太高。相同的代码是遍历目录结构并生成 html。

理想情况下,您的代码应该分开,这样您就可以:

  1. 从给定的目录结构构建数据结构的目录解析器;然后
  2. 用于构建 html 的渲染器

关于ruby-on-rails - 如何测试目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484209/

相关文章:

ruby-on-rails - 如何在 Rake 任务中执行命令?

testing - 如何将数据从一些 json 文件传递​​到 Gherkin 特征文件

testing - Grails从Gradle/命令行将.gsp编译为.html

javascript - 如何在YUI3中使用Assert.isUndefine()和Assert.isNotUndefine()?

python - 我想 Flask 希望我在我的 tests.py 文件中实例化应用程序,但我不知道如何

ruby-on-rails - 设计测试数据库记录同时测试的冲突

ruby-on-rails - 简单计算会导致Ruby中的语法错误

ruby-on-rails - 查找具有所有关联记录的记录

jquery - 所有字段均可使用 jeditable 同时编辑

python - 仅在 Python 中测试受影响的代码