Jas*_* FB 9 ruby mysql rspec ruby-on-rails
我在 MySQL on Rails 6.0.2.2、RSpec 4.0.0.rc1、Ruby 2.6.4 上遇到了这个极其奇怪的间歇性问题
在两台独立的 Mac 上,一台运行 macOS Mojave,另一台运行 MacOS Catalina
有趣的是,运行 Catalina 的 Mac 似乎很少这样做,尽管它仍然这样做。失败是间歇性的,似乎在套件中的另一个失败之后立即发生,但随后经常在后续运行中继续出现(大约一半的测试套件),即使我已经修复了最初失败的规范。
1) Template
Failure/Error: _query(sql, @query_options.merge(options))
ActiveRecord::StatementInvalid:
Mysql2::Error: MySQL client is not connected
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query'
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt'
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query'
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/rspec-wait-0.0.9/lib/rspec/wait.rb:46:in `block (2 levels) in <top (required)>'
# ------------------
# --- Caused by: ---
# Mysql2::Error:
# MySQL client is not connected
# /Users/jason/.rvm/gems/ruby-2.6.4/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query'
Run Code Online (Sandbox Code Playgroud)
小智 10
当我设置我的个人笔记本电脑(Mac OS Catalina)在家工作时,我开始遇到这个问题。在此过程中,我将我们的环境从 Ruby 2.4.7 更新到 2.6.3,将 gems 系统从 3.0.6 更新到 3.1.2。而且,毫无疑问,我们的捆绑宝石也发生了增量更新。我无法确定是哪个更改导致了新的、看似随机的间歇性故障。
谷歌首先引导我来到这里,其次是关于一个最小问题的讨论: https://github.com/seattlerb/minitest/issues/744
然后,仔细查看我的测试,我注意到第一个失败的测试总是触发异步方法。
我将其添加到我的config/environments/test.rb文件中:
config.active_job.queue_adapter = :inline
Run Code Online (Sandbox Code Playgroud)
所有测试都再次通过。
我不知道这是否构成修复或解决方法。我不确定异步进程之前是否正常工作,或者之前是否内联处理它们并且默认行为发生了变化。我们目前进行的测试并未专门验证异步性。所以,目前,这解决了我的问题。
就我而言,我在运行 ActiveJob 后台作业测试时遇到了问题,并且添加config.active_job.queue_adapter = :test到 config/environments/test.rb 对我有用。
| 归档时间: |
|
| 查看次数: |
6867 次 |
| 最近记录: |