Ruby on Rails:用于电子邮件验证的MiniTest

时间:2014-10-11 18:38:56

标签: ruby-on-rails minitest

这是一个绝对的初学者问题,它可能很明显,但我还没有找到答案。

我正在尝试使用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]中找到。

1 个答案:

答案 0 :(得分:1)

问题实际发生在第二行:

assert_match(/\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i, user.email)

您使用的电子邮件是" example.com",它未能通过REGEXP匹配。尝试使用" dummy@example.com"代替。