Ruby on rails 电子邮件以.edu验证和rspec结尾
在Hartl的教程中,我看到了以下RSpec代码Ruby on rails 电子邮件以.edu验证和rspec结尾,ruby-on-rails,regex,rspec,Ruby On Rails,Regex,Rspec,在Hartl的教程中,我看到了以下RSpec代码 describe "when email format is invalid" do it "should be invalid" do addresses = %w[user@foo,com user_at_foo.org example.user@foo. foo@bar_baz.com foo@bar+baz.com] addresses.each do |inva
describe "when email format is invalid" do
it "should be invalid" do
addresses = %w[user@foo,com user_at_foo.org example.user@foo.
foo@bar_baz.com foo@bar+baz.com]
addresses.each do |invalid_address|
@user.email = invalid_address
expect(@user).not_to be_valid
end
end
end
describe "when email format is valid" do
it "should be valid" do
addresses = %w[user@foo.COM A_US-ER@f.b.org frst.lst@foo.jp a+b@baz.cn]
addresses.each do |valid_address|
@user.email = valid_address
expect(@user).to be_valid
end
end
end
第一个是测试无效电子邮件,第二个是测试有效电子邮件。我理解大部分呈现给我的内容,但现在我想对其进行调整,以便只接受以.edu结尾的电子邮件。我想到了几个问题:
我知道与.edu规则相关的正则表达式,但我真的很想学习RSPec,而不仅仅是慢慢地学习它。如有任何建议,将不胜感激 对于以edu结尾的电子邮件,您需要将以下正则表达式添加到user.rb模型中 大概是这样的:
validates_format_of :email, :with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+edu)\z/i
@user = User.new
假设您的用户模型中有:
validates :email, :presence => true
然后尝试保存此@user
@user.save
它救不了你。您可以通过以下方式检查错误:
@user.errors
true
,而您只执行了when email format is valid测试,您就不会知道它从不拒绝无效的电子邮件.edu
地址有效,并且您希望对其进行测试后,应将所有非edu地址移动到“当电子邮件格式无效”块中的列表中,并将一些.edu地址添加到“当电子邮件格式有效”块中您需要测试验证功能是否正确地传递有效电子邮件,以及是否正确地拒绝无效电子邮件。因此,您需要两个测试。您的用户模型中现有的正则表达式是什么?