我试图理解6.18(rails 3.2)中唯一性约束的测试。
describe "when email address is already taken" do
...
before do
user_with_same_email = @user.dup
user_with_same_email.save
end
it { should_not be_valid }
end
“这里的方法是让用户使用与@user相同的电子邮件地址,我们使用@ user.dup完成,这会创建一个具有相同属性的重复用户。由于我们保存了该用户,原始@用户的电子邮件地址已存在于数据库中,因此无效。“
我不清楚的部分是第一个用户保存到数据库的位置/时间?即没有调用user.save。汽车魔术在哪里?
谢谢,
KA
答案 0 :(得分:0)
永远不会保存第一个用户。测试设置初始化(但不保存)用户,然后复制它并保存副本。然后它尝试验证原始(未保存)用户。由于该副本具有相同的电子邮件地址,因此valid?
会返回false
。