加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 如何阻止rspec在测试之前删除测试数据库

发布时间:2020-12-16 21:48:42 所属栏目:百科 来源:网络整理
导读:我有两个使用相同数据库的Rails应用程序.一个应用程序通过迁移管理数据库,但另一个应用程序只是访问它. 出于某种原因,当我在不管理数据库的应用程序中使用RSpec运行测试时,它会在运行测试之前删除数据库.但由于此应用程序不知道如何重新创建数据库,因此所有
我有两个使用相同数据库的Rails应用程序.一个应用程序通过迁移管理数据库,但另一个应用程序只是访问它.

出于某种原因,当我在不管理数据库的应用程序中使用RSpec运行测试时,它会在运行测试之前删除数据库.但由于此应用程序不知道如何重新创建数据库,因此所有测试都将失败.

如何告诉RSpec不要丢弃数据库,只是按原样使用它?

解决方法

如果您不需要迁移数据库,则可以重新定义rspecs-rails
spec:准备这样的任务:

LIB /任务/ patch_rspec_rails.rb

Rake::Task["spec:prepare"].clear
namespace :spec do
  task :prepare do
    ENV['RACK_ENV'] = ENV['RAILS_ENV'] = 'test'
  end 
end

原始规范:准备任务callstest:prepare,设置db.

任务测试:准备自Rails 4.0(或可能更早)以来存在.此任务也存在于Rails 5.0中.这是一个用于添加依赖于测试的设置的铁路的钩子.您可以使用rake -W test检查其定义:prepare.那
任务被击中你可以用rake –trace spec检查.

ActiveRecord uses this task检查迁移状态并设置db.

如果未调用此任务,则不会删除或创建任何数据库.

但请注意,当其他一些宝石使用测试:准备作为一个钩子插入测试,它将无法正常工作.

编辑:

从Rails 4.1开始,您可以在config / environments / test.rb中设置config.active_record.maintain_test_schema = false.这样Rails就不应该再尝试迁移您的测试模式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读