Rspec在完成测试后会挂起

时间:2014-01-23 16:15:00

标签: ruby-on-rails ruby ruby-on-rails-3 rspec

之前有没有人见过这个问题?有时为我的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。

感谢阅读!

2 个答案:

答案 0 :(得分:0)

好的,在朋友的帮助下弄清楚了。所有这一切都是从我的spec_helper中删除SimpleCov。不知道为什么SimpleCov导致了这个问题,但是如果我发现的话,我会在这里发布更新。

答案 1 :(得分:0)

我遇到了同样的问题,并通过在spec_helper.rb中添加以下内容解决了这个问题:

SimpleCov.start do
  use_merging false
end

请注意,我正在使用同步目录的虚拟机vm上运行。

以下是我发现的解释原因:

“当存在simplecov时,默认情况下它会尝试将记录的覆盖范围与磁盘上的内容合并。为了避免损坏,它使用锁定文件来保护此合并。因为我的虚拟盒共享fs实际上不符合posix,所以锁定文件永远不会获取,并且在这里默默地阻止。

由于我不关心合并覆盖率结果,因此我的解决方案是使用use_merging标志禁用此行为。“

https://gist.github.com/k-yamada/3930916