0

我正在学习 Rspec。当我运行我的测试用例进行电子邮件验证时,我收到一个无法理解的错误。请解释一下。

  1) User should check for email validation
     Failure/Error: @test_user.should have(1).errors_on(:email)
       expected 1 errors on :email, got 2
     # ./spec/models/user_spec.rb:17:in `block (2 levels) in <top (required)>'

Finished in 0.12903 seconds
2 examples, 1 failure

我的测试用例如下:

  it"should check whether name is present or not" do
    @test_user.name = nil
    @test_user.should have(1).errors_on(:name)
  end

  it "should check for email validation"do
    @test_user.email = nil
    @test_user.should have(2).errors_on(:email)
  end
end
4

1 回答 1

1

如果您同时使用存在验证器和某种格式验证器来验证电子邮件属性,那么将属性设置为 nil 会出现两个错误。

也许尝试类似:

validates :email, presence: true, 
                  format: { with: %r\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/,
                            allow_nil: true  }
于 2012-05-23T19:28:49.273 回答