RSpec测试失败

6

事实上,这是一个配置问题。 spec/spec_helper.rd指向了“test”环境。 我把它改成了“development”,以便它引用config/environments/development.rb。

最好的问候
Fred

我是RoR新手,并遵循Michael Hartl的RoR 3.2教程。

当执行第一个测试(第3.2.1章)时,RSpec返回了一百个错误,从以下错误开始(基本上都是相同的):

/home/fred/.rvm/gems/ruby-1.9.3-p0@ODQ/gems/activerecord-3.2.1/lib/active_record/connection_adapters/abstract/connection_specification.rb:45:in
`resolve_hash_connection': database configuration does not specify
adapter (ActiveRecord::AdapterNotSpecified)

我的DEV数据库是PostgreSQL,看起来工作正常(迁移也很顺利)。

有人能帮我理解出错的原因并解决吗?

谢谢!

Gemfile:

source 'https://rubygems.org'

gem 'rails', '3.2.1'

# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'

gem 'postgres-pr'
gem 'pg'

# gem for test scripts
group :development, :test do 
gem 'rspec-rails'
end

group :test do
  gem 'capybara', '1.1.2'
end

# Gems used only for assets and not required
# in production environments by default.
group :assets do
  gem 'sass-rails',   '~> 3.2.3'
  gem 'coffee-rails', '~> 3.2.1'
  gem 'uglifier', '>= 1.0.3'
end

gem 'jquery-rails'

database.yml:

# PostgreSQL 8.4
development:
  adapter: postgresql
  encoding: unicode
  database: ODQ_APP
  pool: 5

环境:

Ruby version    1.9.3 (i686-linux)
RubyGems version    1.8.15
Rack version    1.4
Rails version   3.2.1
JavaScript Runtime  Node.js (V8)
Active Record version   3.2.1
Action Pack version 3.2.1
Active Resource version 3.2.1
Action Mailer version   3.2.1
Active Support version  3.2.1
Middleware  

ActionDispatch::Static
Rack::Lock
#<ActiveSupport::Cache::Strategy::LocalCache::Middleware:0xa848460>
Rack::Runtime
Rack::MethodOverride
ActionDispatch::RequestId
Rails::Rack::Logger
ActionDispatch::ShowExceptions
ActionDispatch::DebugExceptions
ActionDispatch::RemoteIp
ActionDispatch::Reloader
ActionDispatch::Callbacks
ActiveRecord::ConnectionAdapters::ConnectionManagement
ActiveRecord::QueryCache
ActionDispatch::Cookies
ActionDispatch::Session::CookieStore
ActionDispatch::Flash
ActionDispatch::ParamsParser
ActionDispatch::Head
Rack::ConditionalGet
Rack::ETag
ActionDispatch::BestStandardsSupport

Application root    /home/fred/rails_projects/ODQ
Environment development
Database adapter    postgresql
Database schema version 20120503135705

Fred


1
这是你的整个database.yml文件吗?应该有一个测试部分,你只有开发部分。 - Christoph Petschnig
1个回答

10

你需要修复这个问题

# PostgreSQL 8.4
development:
  adapter: postgresql
  encoding: unicode
  database: ODQ_APP
  pool: 5

并添加像这样的测试部分

# PostgreSQL 8.4
test:
  adapter: postgresql
  encoding: unicode
  database: ODQ_APP_test
  pool: 5

还要记得创建测试数据库 :) Rspec 运行在"test"环境中,因此会查找 database.yml 文件中 test 键下的配置而不是 development 键下的配置 :)


没错,你说得对。测试应该在测试环境下进行,这也解释了Rspec设置默认值的原因。上面的配置技巧帮助我理解了它的工作原理,但并不够简洁。另一方面,测试驱动开发是为了开发而存在的...我会开始讨论这个问题... - user1185081

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接