迁移错误设置rspec时

时间:2014-10-11 22:48:29

标签: sqlite ruby-on-rails-4 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

我认为将我的Scores模型中的:test_type更改为基于该错误的布尔值存在问题,但它在本地和Heroku上运行良好,所以我不想弄乱我的数据库才能运行试验。任何帮助表示赞赏。

更新: 我将其添加到test.rb文件中:

config.active_record.maintain_test_schema = false

此外,在看到许多其他相关的Stack Overflow问题后,我将我的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 个答案:

答案 0 :(得分:1)

在上面的更新中,我将其添加到test.rb文件中,该文件实际上已经清除了一切:

config.active_record.maintain_test_schema = false

然后我得到了(LoadError),但那是因为我的文件名不完全正确。当您在下面输入如下内容时,请确保路线​​和文件名正确无误!

rspec spec/models/question_spec.rb
相关问题