如何在测试套件中调试“数据库不存在”错误?

时间:2013-11-30 17:07:08

标签: ruby-on-rails rspec capybara factory-bot

我最近在新机器上设置了Rails开发环境。我现在正在尝试运行应用程序的测试套件,但不断出现数据库错误。

Failure/Error: user = FactoryGirl.create(:user)
PG::ConnectionBad:
FATAL:  database "test-db" does not exist

我的database.yml文件已正确设置。我已经运行psql -l并且test-db确实存在,并且通过运行rake db:create来确认这一点,我得到一个'已存在'消息。

我已经运行rake db:migraterake:test:prepare,但错误仍然存​​在。

我的测试设置如下

group :test do
  gem 'rspec-rails'
  gem 'factory_girl_rails'
  gem 'capybara'
  gem 'guard-rspec'
  gem 'spork-rails'
  gem 'guard-spork'
end 

我对开发数据库没有任何问题。

为什么我得到db不存在错误,我该怎么做才能调试它?

3 个答案:

答案 0 :(得分:6)

首先尝试运行:

rake db:create

答案 1 :(得分:3)

我会添加帮助我的解决方案(如果有人遇到此问题)。我不得不跑:

bundle exec rake db:setup

这将重新创建数据库并运行任何迁移。

答案 2 :(得分:2)

经过大量的反复试验,我终于设法让测试数据库正常运行。如果其他人遇到此问题,请留下以下内容。

问题是database.yml中的用户名不正确(虽然我确实更改了这些值,但我认为这不是原因,因为开发和测试之前都使用相同的用户名。)

或者在其他地方ENV["DATABASE_URL"] = "postgres://localhost/test_db"设置的配置var中的小拼写错误。这应该是test-db