我有一个方法助手,它读取文件和目录并构建 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。
理想情况下,您的代码应该分开,这样您就可以:
- 从给定的目录结构构建数据结构的目录解析器;然后
- 用于构建 html 的渲染器
关于ruby-on-rails - 如何测试目录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7484209/