LoginSignup
10
8

More than 3 years have passed since last update.

【Ruby On Rails】RSpecを用いたテストのエラー MySQL client is not connected

Posted at

備忘録です。

エラー内容

OrderForm
  商品購入
    商品購入がうまくいく時
      次の7項目が存在すれば購入できる→zipcide, prefecture_id, city, address, phone_number, user_id, item_id
      建物名が空でも購入できる
    商品購入がうまくいかない時
      郵便番号が空では購入ができない
      郵便番号にハイフンがないと購入できない
      電話番号にハイフンがあると購入できない (FAILED - 1)
      電話番号が11桁以内じゃないと購入できない (FAILED - 2)

Failures:

  1) OrderForm 商品購入 商品購入がうまくいかない時 電話番号にハイフンがあると購入できない
     Failure/Error: _query(sql, @query_options.merge(options))

     ActiveRecord::StatementInvalid:
       Mysql2::Error::ConnectionError: Lost connection to MySQL server during query

Mysqlでエラーが起こっているとのこと。
おそらくですが、先に読み込まれるべきデータより前に、後のものを読み込んでしまってエラーが起きている可能性があります。

対処法

require 'rails_helper'
describe OrderForm do
  before do
    @order = FactoryBot.build(:order_form)
    sleep(1)
  end

先に読み込まれるものが無いように、1秒毎にテスト処理を行うことにしました。
テストの記述にsleep(1)を追記してあげることで、エラーを回避することができました。

10
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
8