我目前在使用 rspec 运行测试时遇到问题。所有测试文件 (*_spec.rb) 都可以成功运行。在同样罕见的情况下,Errno::EACCES
可能会出现错误,并且其中一个测试可能会失败。例如:
文件中的所有测试*_spec.rb
运行:
- 成功地。
- 成功地。
- 一个测试失败了。
- 成功地。
- 一项测试失败(与#3 不同)。
- 等等
异常从以下行引发:
FileUtils.mv
FileUtils.mkdir_p
FileUtils.rm_r
所有这些列表都适用于文件或目录,并在测试中多次使用。即:
创建文件夹(带有子文件夹,带有文件等),重命名文件夹,测试某些东西,删除..等等。
看起来问题隐藏在“时间”中的某个地方(如果尚未完成某些操作并且另一个操作尝试访问该操作)。这个心意来自:
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
但这是最好的解决方案吗?
PS
对不起我的英语并随时提出任何问题,因为我试图尽可能简短地解释。在此先感谢您,至少您已经读到了最后;