在Rails TestCase中检查正则表达式

时间:2019-06-06 10:39:03

标签: ruby-on-rails testing

因此,在Rails中,我为电子邮件编写了以下验证:

validates :email, presence: true, uniqueness: true
validates_format_of :email, :with => /\A[^@\s]+@([^@\s]+\.)+[^@\s]+\z/

当我尝试使用错误的电子邮件提交内容时,此方法有效,因为它向我发送了一个错误,但是当我尝试像这样进行测试时:

test "should not save if email is not valid" do
    slogan = Slogan.create(firstname: 'tristan', lastname: 'vermeesch', email: 'titivermeeschgmail.com', slogan: 'Test')
    assert slogan.valid?, "Tried to save with an email that is not valid"
  end

测试失败,有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

如果您尝试测试不应保存您的模型并且在输入错误电子邮件时它应该有错误,您可以使用有效的吗?方法和错误?属性。 您的测试将如下所示:

test "should not save if email is not valid" do
    slogan = Slogan.create(firstname: 'tristan', lastname: 'vermeesch', email: 'titivermeeschgmail.com', slogan: 'Test')
    assert_not_nil slogan.errors[:email]
  end