2017-04-01 8 views
0

私は現在自分のWebアプリケーションのテストを書いています。Ruby on Rails - rspec検証に失敗しました:クラスが存在する必要があります

コンテキスト: 私はUserControllerの "show"メソッドをテストしています。ただし、ユーザーはFaceクラスと1対1の関係にあります。

ここにshowメソッドをテストするコードを示します。

it "assigns the requested user as @user" do 
    face = Face.create(:id => 1) 
    user = User.create! valid_attributes 
    get :show, params: {id: user.to_param}, session: valid_session 
    expect(assigns(:user)).to eq(user) 
    end                 
end 

let(:valid_attributes) { { "lastName" => "lname", "firstName" => "fname", "face_id" => 1 } }

私はここでRSpecの実行すると、コンソールでのエラーです:

Failure/Error: user = User.create! valid_attributes 

ActiveRecord::RecordInvalid: 
    Validation failed: Face must exist 

私はそれを作成した場合は顔が存在しませんどのように来ますか?

+1

あなたは顔とユーザーモデルを投稿できますか?多分、Faceにはid以外の何かが必要でしょう。 – linnal

+0

あなたは真ん中でそれを打つ。問題は実際にフェイスクラスでした。追加の財産が必要でした。私はそれがコンソールにそれを記録していないことが奇妙なことがわかります。ありがとうlinnal。 – MasterJohn

+0

Faceオブジェクトに 'id'を自分で割り当てるのはなぜですか? –

答えて

0

問題は単純にFaceに追加の属性が必要であることでした。 Railsはオブジェクトの作成が失敗したことを通知しないため、モデルを再確認してください。 (これは私の場合に起こったことです)

+0

これが正しい場合は、追加の属性を付けてコードスニペットを追加して、自分の回答を承認済みとしてマークする必要があります。 – trh

関連する問題