【问题标题】:Understanding rspec test for uniqueness -- listing 6.18了解 rspec 测试的唯一性——清单 6.18
【发布时间】:2013-06-18 05:29:59
【问题描述】:

我正在尝试了解清单 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。汽车的魔力在哪里?

谢谢,

【问题讨论】:

    标签: rspec railstutorial.org


    【解决方案1】:

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

    【讨论】:

    • 对!明白了。需要注意itit { should_not be_valid }中指的是什么。非常感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多