RSpec正在冻结

时间:2014-09-18 19:17:22

标签: ruby-on-rails ruby rspec

我在rails应用程序中安装了rspec配置。它工作正常(我们只是试验rspec所以那里只有2个测试)。

他们工作正常。现在,当它使用数据库进行测试时,rspec正在冻结。

我冻结了。我甚至都不知道要开始寻找,因为输出中没有错误。

是否有针对rspec的详细或调试模式或有人曾经遇到此问题?

我已经尝试了-b但它之前冻结可能会出错。

输出:( Rspec配置了--format文档)

[leandro@machine:~] rspec
User

然后就是这样。它挂了。我必须手动重置计算机两次。

这是user_spec.rb

require 'spec_helper'

describe User do

  let(:user) { User.create({
    username: "teste",
    email: "teste@teste.com",
    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

事实证明delayed_job_active_record宝石导致悬挂。

我不知道为什么,但正如@Greg Malcolm我调查了log/teste.log并且在创建延迟的作业数据库并设置新用户之后,rspec正在变得有效。

我仅限制宝石用于开发和生产环境,并且它有效!

3 个答案:

答案 0 :(得分:1)

我没有听说过像rspec那样冗长的啰嗦功能。但是查看log/test.log并查看其中显示的内容可能更有用。它显示数据库活动,它是冻结效果的一部分。

您可能还需要rails console进行测试,并确保您的数据库连接正常工作。

答案 1 :(得分:0)

这是一个很老的问题,但是如果其他人会得到这个。由于删除了DRb服务器(spork或zeus)后,项目--drb文件中的.rspec选项保留了不变的功能,所以我今天也有同样奇怪的Rspec行为。如果没有安装spork或zeus,只需确保Rspec禁用了DRb。

答案 2 :(得分:0)

您必须检查./log/test.log文件。随着此文件趋于增大,请使用tail命令读取最后n行。

例如,要读取日志文件的最后5行,请执行以下命令:

tail -5 ./log/test.log

就我而言,我的Google Pub / Sub模拟器已挂起。

[ActiveJob] Failing with status #<struct Struct::Status code=4, details="Deadline Exceeded", metadata={}>
[ActiveJob] calling pubsub.googleapis.com:443:/google.pubsub.v1.Publisher/GetTopic

使用tail -f ./log/test.log有助于在RSpec运行时跟踪日志。您可以通过thinkbot在"Tail Your Test Logs"上阅读有关此内容的更多信息。