首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何运行测试套件的迁移。

如何运行测试套件的迁移。
EN

Stack Overflow用户
提问于 2018-06-01 10:28:56
回答 2查看 610关注 0票数 0

我有一个使用ActiveRecord和sqllite的ruby应用程序。我正在尝试编写测试,但是我得到了这个错误:

代码语言:javascript
复制
 Failure/Error: user = described_class.create(name: name)

     ActiveRecord::StatementInvalid:
       Could not find table 'users'

这是我的gemfile:

代码语言:javascript
复制
source "https://rubygems.org"

gem "sinatra-activerecord"
gem "sqlite3"

group :test do
  gem 'database_cleaner'
end

group :test, :development do
  gem "rspec-rails", ">= 2.1.0"
  gem "pry"
end

我有一个看起来像这样的spec_helper:

代码语言:javascript
复制
RSpec.configure do |config|


  ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: 'db/test.db')
end

如何创建测试数据库并为我的sqllite测试运行迁移?

EN

回答 2

Stack Overflow用户

发布于 2018-06-01 10:49:38

bin/rails RAILS_ENV=test db:migrate和/或bin/rails db:test:prepare将更新您的测试数据库。你可能也想看看Rails Testing Guides --那里有很多有用的信息。或者,如果您不想使用fixture,那么FactoryBot非常适合于生成测试数据。

票数 3
EN

Stack Overflow用户

发布于 2018-06-01 18:10:35

吉尼的答案是可行的,但如果像肖恩提到的那样,你需要一个仅限ActiveRecord的解决方案,而不是使用Rails,请考虑以下内容:

我最近开发了一个gem,可以在不使用Rails的情况下绑定一些ActiveRecord模型。下面是我用rspec测试我的模型的方法:

spec/spec_helper.rb:

代码语言:javascript
复制
ActiveRecord::Base.establish_connection(adapter: 'sqlite3',
                                        database: ':memory:')
ActiveRecord::Schema.define do
  require_relative '../lib/db/migrate/create_models'
end

lib/db/migrate/create_models.rb: (为了制作这个文件,我复制/粘贴了迁移生成的实际schema.rb )

代码语言:javascript
复制
class CreateModels < ActiveRecord::Migration[5.1]
 create_table "users", force: :cascade do |t|
   t.string "uid", default: "", null: false
   t.string "email", null: false
   // other attributes
 end
 // other tables
end

这将创建运行测试所需的表。

不要忘记在*_spec.rb文件中需要spec_helper,这样就可以了。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50635290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档