我目前正在为我的网络应用程序编写测试,但我发现了一些超出我智能范围的测试。
背景: 我正在测试UserController的“show”方法。但是,User与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
为什么Face不存在如果我创建了它?
答案 0 :(得分:0)
问题只是Face需要一个额外的属性。确保仔细检查模型,因为Rails不会告诉您对象创建失败。 (这就是我的情况。)