Techioz Blog

RSpec がフリーズしています

概要

Rails アプリに rspec を設定してインストールしました。正常に動作していました (rspec を試しているだけなので、テストは 2 つだけです)。

彼らは順調に働いていました。現在、データベースを使用してテストを実行しようとすると、rspec がフリーズします。

ただ凍ってしまいます。出力にエラーがないため、探し始めるべきかどうかさえわかりません。

rspec の冗長モードまたはデバッグ モードはありますか、あるいは誰かがこれに直面したことがありますか?

-b を試してみましたが、エラーが発生する前にフリーズします。

出力: (Rspec は –format ドキュメントで構成されています)

[leandro@machine:~] rspec
User

というより、それだけです。それはハングします。コンピューターを手動で 2 回リセットする必要があります。

これは user_spec.rb です

require 'spec_helper'

describe User do

  let(:user) { User.create({
    username: "teste",
    email: "[email protected]",
    name: "Teste",
    phone: "123456789",
    password: "123456",
    notes: "Teste"
    }) }
  subject { user }

  it "is invalid without a username" do
    user.username = nil
    is_expected.not_to be_valid
  end
end

そして私のspec_helper.rb

# This file is copied to spec/ when you run 'rails generate rspec:install'
ENV["RAILS_ENV"] ||= 'test'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'

Dir[Rails.root.join("spec/support/**/*.rb")].each { |f| require f }

# Checks for pending migrations before tests are run.
ActiveRecord::Migration.maintain_test_schema!

RSpec.configure do |config|
  config.infer_base_class_for_anonymous_controllers = false
  config.order = "random"
  config.color = true
  config.tty = true
  config.formatter = :documentation #:progress, :html, :textmate
  config.expect_with :rspec do |c|
    c.syntax = :expect
  end
end

解決

遅延_job_active_record gemがハングの原因となっていることが判明しました。

理由はわかりませんが、@Greg Malcolm として log/teste.log を調べたところ、遅延ジョブ データベースを作成して新しいユーザーを設定した直後に rspec が異常終了していました。

gem を開発環境と本番環境のみに制限しましたが、うまくいきました。

解決策

rspec の rake のような冗長機能については聞いたことがありません。ただし、log/test.log を調べて、そこに何が表示されているかを確認する方がおそらく便利です。これは、フリーズ効果の一部であるデータベース アクティビティを示します。

Rails コンソールをテストして、データベース接続が正しく機能していることを確認することもできます。