Errno :: ENOENT:运行rspec测试时出错,说文件不存在但是确实存在

时间:2011-09-05 03:05:48

标签: ruby tdd rspec-rails

所以我试图测试一个控制器,但遇到了问题。部分代码需要加载文件,但我收到此错误:

Errno::ENOENT:
       No such file or directory - ./public/licenses/58efcffc3d8441fcc0627164a8b1350aFCV5Hmashup_lic.xml

但是,该文件确实退出。当我在浏览器中运行它时,它可以正常工作而没有任何问题(但我还是想写一个测试)。

我不知道这是否与它有关,但我在运行测试时使用的是数据库。我知道这不是我应该怎么做的,但我不知道其他任何方式。

任何帮助都会很棒。感谢。

2 个答案:

答案 0 :(得分:1)

很可能是因为您在运行测试时假设当前工作目录的位置是错误的。尝试在其中放置puts File.dirname('.')以确保您从您认为自己的目录运行。

答案 1 :(得分:0)

作为调试工具:

在测试中,就在检查文件的语句之前,尝试添加

puts "list dir " + `ls ./public/licenses/`

查看文件是否真的存在。

可能是测试用户ID

的权限问题

也可能是文件实际上并不存在......