Ошибка миграции при настройке rspec
Я пытаюсь добавить тестирование rspec в приложение, над которым я уже работал. Я следую этому руководству: http://everydayrails.com/2012/03/19/testing-series-rspec-models-factory-girl.html которое вышло в 2012 году, поэтому я уверен, что это было сделано с использованием Rails 3. Я установил rspec и capybara, запустил bundle и запустил rails g rspec: install. Я начал писать тест моей модели Вопроса ниже, и когда я запустил его с помощью rspec spec/models/question_spec.rb
Я получил ошибку: миграции ожидают; запустите 'bin/rake db:migrate RAILS_ENV=test', чтобы решить эту проблему. Я попытался запустить это, и я получил эту ошибку об одной из моих предыдущих миграций:
== ChangeTestTypeInScores: migrating =========================================
-- change_column(:scores, :test_type, "boolean USING CAST(test_type AS boolean)")
rake aborted!
StandardError: An error has occurred, this and all later migrations canceled:
SQLite3::SQLException: near "USING": syntax error: CREATE TABLE "scores" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "test_type" boolean USING CAST(test_type AS boolean), "name" varchar(255), "created_at" datetime, "updated_at" datetime, "user_id" integer, "month" varchar(255), "year" varchar(255))
Как я могу правильно настроить rspec, не портя мою базу данных, которая в противном случае работает нормально?
rails_helper.rb:
ENV["RAILS_ENV"] ||= 'test'
require 'spec_helper'
require File.expand_path("../../config/environment", __FILE__)
require 'rspec/rails'
require 'capybara/rspec'
ActiveRecord::Migration.check_pending!
.rspec:
--color
--require spec_helper
--require rails_helper
--format documentation
question_spec.rb:
require 'spec_helper'
describe Question do
it "has a valid factory"
it "is invalid without a body"
it "is invalid without an answer"
end
Я предполагаю, что есть проблема с моим изменением: test_type в моей модели Scores на логическое значение, основанное на этой ошибке, но все это прекрасно работает локально и на Heroku, поэтому я не хочу связываться с моей базой данных для запуска тестов. Любая помощь приветствуется.
ОБНОВЛЕНИЕ: я добавил это в файл test.rb:
config.active_record.maintain_test_schema = false
Кроме того, я обновил свою версию rails до 4.1.6 после просмотра многих других связанных с переполнением стека проблем. Теперь я получаю эту ошибку:
/Users/tambe257/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.1.6/lib/active_support/dependencies.rb:241:in `load': cannot load such file -- /Users/tambe257/programming/rails_projects/fast_track/spec/models/question.rb (LoadError)
Это похоже на проблему с некоторыми зависимостями, но я безуспешно пытаюсь найти ошибку.
1 ответ
В вышеупомянутом обновлении я добавил это в файл test.rb, который на самом деле прояснил ситуацию:
config.active_record.maintain_test_schema = false
Я тогда получал (LoadError), но это было из-за того, что мое имя файла не было полностью правильным. Когда вы вводите что-то вроде этого ниже, убедитесь, что маршрут и имя файла указаны правильно!
rspec spec/models/question_spec.rb