2012-05-02 82 views
3

更新:我的問題肯定與this one有關 - 這是ActiveRecord的問題。仍然沒有解決。ActiveRecord在Rspec測試中導致SQLException

我試圖得到一個測試在rspec的通過,無法弄清楚什麼錯誤......這裏就是我得到:

Running: spec/models/user_spec.rb 
. 
. 
. 
........F 

Failures: 

    1) User when email address is already taken 
    Failure/Error: user_with_same_email.save 
    ActiveRecord::StatementInvalid: 
    SQLite3::SQLException: near "SAVEPOINT": 
    syntax error: SAVEPOINT active_record_1 
    # ./spec/models/user_spec.rb:64:in `block (3 levels) in <top (required)>' 

Finished in 0.22908 seconds 
9 examples, 1 failure 

下面是在我的測試相關線路:

user_with_same_email.save 

嘗試寫入數據庫時​​發生中斷。發展很好 - 沒有問題。 謝謝

+0

我會冒險猜測@ user.dup正在讓你。您是否嘗試使用重複的電子郵件地址實例化新用戶,然後保存? –

+0

有可能@user在某個時刻已經被保存了嗎?如果是這樣,我認爲它有一個'id'屬性,我想當你試圖用相同的id保存另一個不同的記錄('user_with_same_email')時,你違反了唯一性約束。 –

+0

從'Failure/Error:user_with_same_email.save'部分,我認爲這是保存到數據庫的問題...我想我可能是錯的。我沒有嘗試手動複製記錄。 –

回答

2

這個問題是舊版本的sqlite。我安裝了Homebrew並運行了brew install sqlite3 由於已經存在的文件,出現了一些錯誤。我剛剛將它們重命名爲*.old並運行brew link sqlite3。問題解決了!