【发布时间】:2012-08-29 09:38:38
【问题描述】:
我目前在使用 rspec 运行测试时遇到问题。所有测试文件 (*_spec.rb) 都可以成功运行。在同样罕见的情况下,可能会出现错误——Errno::EACCES,并且其中一个测试可能会失败。例如:
文件*_spec.rb中的所有测试运行:
- 成功。
- 成功。
- 一个测试失败了。
- 成功。
- 一个测试失败(与 #3 不同)。
- 等
异常从以下行引发:
FileUtils.mvFileUtils.mkdir_pFileUtils.rm_r
所有这些列表都适用于文件或目录,并在测试中多次使用。即:
创建文件夹(带有子文件夹,带有文件等),重命名文件夹,测试某些东西,删除..等等。
看起来问题隐藏在“时间”中的某处(如果 something 尚未完成并且另一个操作试图访问该something)。这个想法来自:
begin
FileUtils.mv(a, b) # if an `Errno:EACCESS` was raised here
rescue #
FileUtils.mv(a, b) # it wouldn't be raised now
end
问题是:
如何修复? (我的意思是Errno:EACCESS 很少被复制和一些测试)
- 在每次对文件进行操作后添加
sleep是不可接受的,但它会有所帮助。 - ruby 的方法 (
FileUtils.(mv|rm_r|mkdir_p)) 可以修改为在Errno::EACCES上重试一次,但这是最好的解决方案吗?
附言
对不起我的英语,请随时提出任何问题,因为我试图尽可能简短地解释。在此先感谢您,至少您已经读到了最后;
【问题讨论】:
标签: ruby rspec ruby-1.9.2