之前有没有人见过这个问题?有时为我的Rails 3.2.14项目运行规范时,rspec似乎像往常一样完成:
Finished in 1.27 seconds
6 examples, 2 failures
Failed examples:
rspec ./spec/models/my_spec.rb:123 # Hello world 1
rspec ./spec/models/my_spec.rb:234 # Hello world 2
但它只是挂在那里,不会让我继续在那个shell中工作。我可以从另一个终端选项卡中删除-9进程,或者只是启动一个新的shell并在那里再次运行测试,但它会使测试驱动的开发变得非常痛苦。
当我重新启动计算机时,问题会消失一段时间,但最终会再次发生。挂起一次之后,每次运行rspec时它都会挂起,即使我在不同的项目中运行不同的测试。同一个项目中的相同测试每次都会在我的同事的计算机上正常通过。
我不确定哪些信息可以帮助回答这个问题,所以请告诉我是否应该添加到这篇文章中。我正在运行ruby 2.0.0p195和rails 3.2.14。我有Mac OS 10.7.5。我使用zsh和rbenv。
感谢阅读!
答案 0 :(得分:0)
好的,在朋友的帮助下弄清楚了。所有这一切都是从我的spec_helper中删除SimpleCov。不知道为什么SimpleCov导致了这个问题,但是如果我发现的话,我会在这里发布更新。
答案 1 :(得分:0)
我遇到了同样的问题,并通过在spec_helper.rb中添加以下内容解决了这个问题:
SimpleCov.start do
use_merging false
end
请注意,我正在使用同步目录的虚拟机vm上运行。
以下是我发现的解释原因:
“当存在simplecov时,默认情况下它会尝试将记录的覆盖范围与磁盘上的内容合并。为了避免损坏,它使用锁定文件来保护此合并。因为我的虚拟盒共享fs实际上不符合posix,所以锁定文件永远不会获取,并且在这里默默地阻止。
由于我不关心合并覆盖率结果,因此我的解决方案是使用use_merging标志禁用此行为。“