【发布时间】:2014-10-17 15:01:57
【问题描述】:
目前正在学习 Michael Hartl rails 教程
考虑到 Rails 中的以下测试
test "email validation should accept valid addresses" do
valid_addresses = %w[user@example.com USER@foo.COM A_US-ER@foo.bar.org
first.last@foo.jp alice+bob@baz.cn]
valid_addresses.each do |valid_address|
@user.email = valid_address
assert @user.valid?, "#{valid_address.inspect} should be valid"
end
end
test "email validation should reject invalid addresses" do
invalid_addresses = %w[user@example,com user_at_foo.org user.name@example.
foo@bar_baz.com foo@bar+baz.com]
invalid_addresses.each do |invalid_address|
@user.email = invalid_address
assert_not @user.valid?, "#{invalid_address.inspect} should be invalid"
end
end
以及以下用于电子邮件格式验证的正则表达式
VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }
有人可以向我解释一下关于正则表达式的测试是什么吗?为什么有效的测试只有 user@example.com、USER@foo.COM 等。如果我将另一个元素添加到 USER@EXAMPLE.COM 的 valid_addresses 会怎样。为什么 Michael 特意选择上述 5 个示例电子邮件作为 valid_addresses 和 5 个 invalid_addresses?
如果正则表达式测试所有格式并且只返回一个特定的格式,我们为什么需要测试呢?
【问题讨论】:
-
不太确定您的问题是什么......测试确保无效电子邮件无效并且使用提供的正则表达式有效电子邮件有效。如果您想知道为什么要进行单元测试,check out this question。
-
我知道我的问题非常令人困惑,所以我想我只是想逐行了解在这种情况下测试的目的是什么。
-
Michael 提出的测试并不详尽。他挑选了一些有效电子邮件地址和一些无效电子邮件地址的示例,以确保正则表达式能够捕获这些情况。他试图找出在输入无效地址时出现的典型错误,以及仍然有效的异常组合。我们进行测试以确保我们在验证部分输入的正则表达式没有错字。
标签: ruby-on-rails regex testing ruby-on-rails-4 railstutorial.org