了解rspec测试的唯一性 - 清单6.18

时间:2013-06-18 05:30:00

标签: rspec railstutorial.org

我试图理解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

1 个答案:

答案 0 :(得分:0)

永远不会保存第一个用户。测试设置初始化(但不保存)用户,然后复制它并保存副本。然后它尝试验证原始(未保存)用户。由于该副本具有相同的电子邮件地址,因此valid?会返回false