2017-04-01 58 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

你可以發表臉和用戶模型?也許臉上除了id之外還需要別的東西 – linnal

+0

你在中間擊中它。這個問題確實在面子課上。它需要一個額外的財產。我覺得很奇怪,它沒有在控制檯中記錄它。謝謝linnal。 – MasterJohn

+0

爲什麼要將'id'自己分配給Face對象? –

回答

0

問題在於Face需要額外的屬性。確保你仔細檢查你的模型,因爲Rails不會告訴你對象創建失敗。 (這是發生在我的情況。)

+0

如果這是正確的,您應該添加帶有附加屬性的代碼片段,並將您自己的答案標記爲已接受;) – trh