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