2012-05-02 3 views
3

업데이트 : 내 문제는 ActiveRecord와 관련하여 this one과 관련이 있습니다. 여전히 해결되지 않았습니다.Rspec 테스트에서 ActiveRecord로 인해 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 

db에 쓸 때 깨집니다. 개발은 괜찮습니다. 문제 없습니다. 감사합니다.

+0

@ user.dup이 (가) 당신을 알아챌 위험이 있습니다. 중복 된 이메일 주소로 새 사용자를 인스턴스화하고 저장 했습니까? –

+0

@user가 어느 시점에서 이미 저장되었을 수 있습니까? 그렇다면'id' 속성이 있다고 생각합니다. 다른 id를 가진 다른 레코드 ('user_with_same_email')를 저장할 때 고유성 제약을 위반하고 있다고 가정합니다. –

+0

'Failure/Error : user_with_same_email.save' 부분에서 DB에 저장하는 것이 문제라고 생각합니다 ... 내가 잘못 생각할 수도 있습니다. 수동으로 레코드를 복제하지 않았습니다. –

답변

2

문제는 이전 버전의 sqlite입니다. Homebrew를 설치하고 실행했습니다. brew install sqlite3 이미 존재하는 파일로 인해 많은 오류가 발생했습니다. 방금 이름을 *.old으로 변경하고 brew link sqlite3으로 실행했습니다. 문제 해결됨!

관련 문제