Как запустить миграцию для набора тестов. - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение ruby, которое использует ActiveRecord и sqllite.Я пытаюсь написать тесты, но получаю эту ошибку:

 Failure/Error: user = described_class.create(name: name)

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

Это мой gemfile:

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, который выглядит следующим образом:

RSpec.configure do |config|


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

Что я могу сделать, чтобы создать тестовую базу данных и запустить миграцию для моих тестов sqllite?

Ответы [ 2 ]

0 голосов
/ 01 июня 2018

Ответ Джинни может сработать, но если, как упомянул Шон, вам нужно решение только с ActiveRecord вместо Rails, подумайте об этом:

Недавно я разработал гем для связывания некоторых моделей ActiveRecord без использования Rails.Вот что я сделал, чтобы протестировать свои модели с помощью rspec:

spec / spec_helper.rb:

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, сгенерированный миграциями)

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_helper в вашем файле * _spec.rb, и все готово.

0 голосов
/ 01 июня 2018

bin/rails RAILS_ENV=test db:migrate и / или bin/rails db:test:prepare обновят ваш тестовый дБ.Вы также можете попробовать Rails Testing Guides - там много полезной информации.Или, если вы хотите избежать фиксаций, FactoryBot отлично подходит для генерации тестовых данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...