Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails RubyonRails:电子邮件验证的小型测试_Ruby On Rails_Minitest - Fatal编程技术网

Ruby on rails RubyonRails:电子邮件验证的小型测试

Ruby on rails RubyonRails:电子邮件验证的小型测试,ruby-on-rails,minitest,Ruby On Rails,Minitest,这绝对是一个初学者的问题,可能很明显,但我还没有找到答案 我正在尝试使用minitest验证RubyonRails中的电子邮件地址 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,})

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

我正在尝试使用minitest验证RubyonRails中的电子邮件地址

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
故意与regex不匹配,因为我想对照失败的测试检查错误消息“is invalid”,但我不知道如何将其传递到
assert_equal

错误消息:

Expected /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\z/i to match "example.com".
应该是:

'is invalid.'

也许我错了,但我的理解是可以在object.errors[:symbol]中找到对象的错误消息。

问题实际上发生在第二行:

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

您使用的电子邮件是“example.com”,它无法匹配REGEXP。试着使用类似于“dummy@example.com“相反。

我实际上想检查错误消息是否正确(应该是:
无效
)。这就是为什么我故意让这个测试失败(通过传递错误的电子邮件地址)。我非常确定错误消息会出现在
user.errors[:email]
但这似乎不是真的。这就是我比较最后一行中的两条错误消息的原因。然后,您应该将这两个断言拆分为两个单独的测试方法。断言匹配失败,并且从未运行过断言相等。