我在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正在变得有效。
我仅限制宝石用于开发和生产环境,并且它有效!
答案 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"上阅读有关此内容的更多信息。