ActiveJob 实例冻结 RSpec 测试



我的模型 Foo 有一个after_create_commit回调,如下所示:

after_create_commit { LogBroadcastJob.perform_later self }

我减少了返回nil perform方法以简化事情。

当我使用 factory_girl 在 RSpec 测试中创建 Foo 实例时,测试套件冻结。这仅在我使用该回调测试模型时发生。

FactoryGirl.create :foo

当我从我的测试套件中取出 Ctl+C 时,它无法杀死进程。我必须找到仍在使用我的数据库(Postgresql)的进程并杀死它,这意味着我在命令行上看不到任何错误。如果我再次运行我的测试套件,它会创建另一个我必须找到并杀死的进程。

这听起来对任何人都熟悉吗?我如何在这里找到有用的错误?

也许相关:不久前我从 Rails 4.2 升级到 5.0.0.1。

这是一个并发问题。感谢@coreyward评论中提供的资源,我能够通过将 config/environment/test.rb 设置为

config.eager_load = true

这与我在 config/environment/development.rb 中的配置不同(一切都在开发中工作),所以我不能说我还不明白它为什么有效。但是我现在可以用bundle exec guardbundle exec rake spec运行所有测试。

最新更新