Search code examples
ruby-on-railsrubyrspec

RSpec is Freezing


I have rspec configured installed in my rails app. It was working fine (We are just experimenting with rspec so there's only 2 tests).

They were working fine. Now rspec is freezing when it's going to perform a test using database.

I just freezes. I don't even know were to start looking because there's no error in the output.

Is there a verbose or debugging mode for rspec or someone ever faced this?

I've tried -b but it freezes before can give an error.

Output: (Rspec is configured with --format documentation)

[leandro@machine:~] rspec
User

Than, that's it. It hangs. I has to reset manually the computer twice.

This is the 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

And my 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

SOLUTION

It turns out that delayed_job_active_record gem was causing the hanging.

I don't know why, but as @Greg Malcolm I looked into the log/teste.log and rspec was feeezing right after createing the delayed jobs database and setting up a new user.

I've restricted the gem just for development and production enviroment, and it worked!


Solution

  • I haven't heard of a rake like verbose feature for rspec. But it's probably more useful to look through log/test.log and see what shows up there. It shows database activity which is part of a freeze effect.

    You might also want to rails console into test and make sure your database connection is working right.