2014-10-11 62 views
0

我試圖添加rspec測試到我已經工作的應用程序。我一直在關注這個教程:2012年的http://everydayrails.com/2012/03/19/testing-series-rspec-models-factory-girl.html,所以我確定它是使用Rails 3完成的。我安裝了rspec和capybara,運行bundle,並運行rails g rspec:install。我開始寫下我的問題模型的測試,並且當我使用rspec spec/models/question_spec.rb運行它時遷移錯誤當設置rspec

我收到錯誤:遷移正在等待;運行'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在我的成績模型布爾基於該錯誤,但它在本地和Heroku都很好,所以我不想惹我的數據庫爲了運行測試。任何幫助表示讚賞。

更新:看到很多其他相關的堆棧溢出問題後

config.active_record.maintain_test_schema = false 

而且,我在我的版本軌更新到4.1.6: 我已將此添加到test.rb文件。現在我得到這個錯誤:

/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