我正在开发我的第一个Rails应用程序并使用rspec&水豚进行测试。当我开始创建应用程序时,我使用SQLite进行开发/测试,并使用pg进行生产。与Heroku讨论一些问题,并成功将我的SQLite3数据库转换为Postgres。除了一些传递的rspec测试现在失败之外,一切看起来都很有效。
具体来说,当我在本地数据库中有测试数据时,rspec测试现在失败了。在转换为postgres之前,我的所有测试都传递了测试数据。在我研究这个问题的过程中,我发现另一个报告类似问题的stackoverflow帖子,但没有找到解决方案。这就是我所做的:
重新启动本地服务器。所有的rspec测试都像在数据库转换之前一样传递。但是,当我添加测试数据时,我的控制器测试和一些模型测试失败。这是我添加一个"成员"之后的一个respec测试的输出。到模特:
`14)当成员没有名字时,创建成员会显示错误 失败/错误:期望(Member.count).to eq(0)
预计:0 得到:1
(使用==进行比较)`
我的gemfile的内容:
source 'https://rubygems.org'
gem 'rails', '4.1.8'
gem 'bootstrap-sass', '~> 3.2.0.0'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.0.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
group :doc do
# bundle exec rake doc:rails generates the API under doc/api.
gem 'sdoc', require: false
end
group :development do
gem 'spring'
gem 'simple_form'
gem 'bcrypt', '~> 3.1.7'
end
group :development, :test do
gem 'pg'
gem 'rspec-rails', '~> 3.1.0'
gem 'factory_girl_rails'
end
group :test do
gem 'capybara', '~> 2.4.3'
gem 'shoulda-matchers', '~> 2.7.0'
gem 'faker'
gem 'paper_trail', '~> 3.0.6'
gem 'database_cleaner', '~> 1.3.0'
gem 'launchy', '~> 2.4.2'
gem 'rspec-activemodel-mocks'
gem 'selenium-webdriver', '~> 2.43.0'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
我的数据库yml文件:
default: &default
adapter: postgresql
encoding: unicode
pool: 5
username: xxxxx
password:
development:
<<: *default
database: postgresql
test:
<<: *default
database: postgresql
production:
<<: *default
database: postgresql
我需要帮助排除故障。当我从SQLite 3转换为postgres时,我猜测我的测试数据库出了问题。有任何想法或建议来解决问题吗?如果我在学习Rails时没有尝试测试驱动的开发,我不会知道某个地方存在问题。在此先感谢您的帮助!
答案 0 :(得分:0)
我解决了问题:我需要将我的应用程序的名称作为&#34;数据库&#34;在我的数据库yml文件的测试部分。所有测试都再次通过。解决方案现在看起来很简单,但它并不明显 - 至少在我学习Rails的这个阶段不是我。我会离开这个帖子,也许它会帮助别人。