从SQLite 3转换为Postgres后,Rspec测试失败

时间:2014-12-17 23:19:10

标签: ruby-on-rails postgresql rspec sqlite

我正在开发我的第一个Rails应用程序并使用rspec&水豚进行测试。当我开始创建应用程序时,我使用SQLite进行开发/测试,并使用pg进行生产。与Heroku讨论一些问题,并成功将我的SQLite3数据库转换为Postgres。除了一些传递的rspec测试现在失败之外,一切看起来都很有效。

具体来说,当我在本地数据库中有测试数据时,rspec测试现在失败了。在转换为postgres之前,我的所有测试都传递了测试数据。在我研究这个问题的过程中,我发现另一个报告类似问题的stackoverflow帖子,但没有找到解决方案。这就是我所做的:

  1. 我跑了"捆绑了exec rake db:reset"确保我的开发数据库中的数据模型反映在测试数据库中。
  2. 重新启动本地服务器。所有的rspec测试都像在数据库转换之前一样传递。但是,当我添加测试数据时,我的控制器测试和一些模型测试失败。这是我添加一个"成员"之后的一个respec测试的输出。到模特:

    `14)当成员没有名字时,创建成员会显示错误   失败/错误:期望(Member.count).to eq(0)

    预计:0         得到:1

    (使用==进行比较)`

  3. 我的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时没有尝试测试驱动的开发,我不会知道某个地方存在问题。在此先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我解决了问题:我需要将我的应用程序的名称作为&#34;数据库&#34;在我的数据库yml文件的测试部分。所有测试都再次通过。解决方案现在看起来很简单,但它并不明显 - 至少在我学习Rails的这个阶段不是我。我会离开这个帖子,也许它会帮助别人。