这是一个绝对的初学者问题,它可能很明显,但我还没有找到答案。
我正在尝试使用minitest验证Ruby on Rails中的电子邮件地址。
test "should have format of email address" do
user = User.create(name: "Dummy", last_name: "Dummy", email: "example.com")
assert_match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, user.email)
assert_equal ["is invalid"], user.errors[:email]
end
问题发生在最后一行assert_equal ["is invalid"], user.errors[:email]
。
电子邮件地址example.com
与正则表达式无法正常匹配,因为我想检查错误消息“无效”,但是我无法弄清楚如何传递它进入assert_equal
:
错误讯息:
Expected /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i to match "example.com".
应该是:
'is invalid.'
也许我错了,但我的理解是对象的错误信息可以在object.errors [:symbol]中找到。
答案 0 :(得分:1)
问题实际发生在第二行:
assert_match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, user.email)
您使用的电子邮件是" example.com",它未能通过REGEXP匹配。尝试使用" dummy@example.com"代替。