Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 从SQLite 3转换到Postgres后,Rspec测试失败_Ruby On Rails_Postgresql_Rspec_Sqlite - Fatal编程技术网

Ruby on rails 从SQLite 3转换到Postgres后,Rspec测试失败

Ruby on rails 从SQLite 3转换到Postgres后,Rspec测试失败,ruby-on-rails,postgresql,rspec,sqlite,Ruby On Rails,Postgresql,Rspec,Sqlite,我正在开发我的第一个Rails应用程序,并使用rspec和capybara进行测试。当我开始创建应用程序时,我使用SQLite进行开发/测试,使用pg进行生产。Heroku遇到了一些问题,并成功地将我的SQLite3数据库转换为Postgres。除了一些通过的rspec测试现在失败外,所有的东西都运行得很好 具体来说,当本地数据库中有测试数据时,rspec测试现在失败。在转为博士后之前,我所有的测试都是通过测试数据的。在我研究这个问题的过程中,我发现另一个stackoverflow帖子报告了类似

我正在开发我的第一个Rails应用程序,并使用rspec和capybara进行测试。当我开始创建应用程序时,我使用SQLite进行开发/测试,使用pg进行生产。Heroku遇到了一些问题,并成功地将我的SQLite3数据库转换为Postgres。除了一些通过的rspec测试现在失败外,所有的东西都运行得很好

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

  • 我运行了“bundle exec rake db:reset”,以确保开发数据库中的数据模型反映在测试数据库中
  • 重新启动本地服务器。所有rspec测试都通过了,就像在数据库转换之前一样。然而,当我添加测试数据时,我的控制器测试和一些模型测试失败。这里是我向模型添加“成员”后的一个respec测试的输出:

    `14)当成员没有名字时,创建成员会显示错误 失败/错误:预期(成员数)。到等式(0)

    预期:0 得到:1

    (使用==进行比较)`

  • 我的文件的内容:

    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
    
    default:&default
    适配器:postgresql
    编码:unicode
    游泳池:5
    用户名:xxxxx
    密码:
    发展:
    
    我解决了这个问题:我需要将我的应用程序的名称作为“数据库”放在数据库yml文件的测试部分。所有的考试又通过了。解决方案现在看起来很简单,但并不明显——至少在我学习Rails的这个阶段,我不这么认为。我会离开这篇文章,也许它会帮助其他人。

    你应该写下这篇文章作为回答,然后接受它。