2011-07-21 2 views
2

私は、多くのPerformedExercisesを持つWorkoutモデルを持っていますが、これには多くのPeformedSetsがあります。私はテストでオブジェクトを構築することができません.SQLite3か他のもの(テスト環境外ではうまく動作します)がわかりません。FactoryGirlでRSpecでテストオブジェクトを作成するとネストされた属性で失敗する

私は次の工場を持っている:

FactoryGirl.define do 
factory :workout do 
    title 'workout one' 
    performed_exercise 
end 

factory :performed_exercise do 
    exercise_id  '2' 
    performed_set 
end 

factory :performed_set do 
    set_number  '1' 
end 
end 

マイRSpecのテストは、(テスト内部の他の問題を除外するように、私はそれが本当のシンプルな作りました)ので、次のようになります。

it "is causing me to lose hair" do 
    wrkt = FactoryGirl.build(:workout) 
end 
私は、テストを実行すると

、私は次のようなエラーメッセージが出ます:

Failure/Error: wrkt = FactoryGirl.build(:workout) 
    ActiveRecord::StatementInvalid: 
     SQLite3::ConstraintException: constraint failed: 
     INSERT INTO "performed_sets" ("created_at", "notes", "performed_exercise_id", "reps", "set_number", "updated_at", "weight") 
     VALUES (?, ?, ?, ?, ?, ?, ?) 

を任意の助けいただければ幸いです!

+0

私は同じコードをコンソール(またはアプリケーション)上でpostgres経由で実行できるため、この問題はsqlite固有のものかどうか疑問に思っています –

答えて

1

運動IDを設定しないでください。 SQLiteがあなたのためにIDを処理させます。