在obj.errors.full_messages中出现两次电子邮件验证错误(Rails 3.2,Devise,RSpec)

时间:2014-10-19 03:43:36

标签: ruby-on-rails ruby testing rspec devise

我正在为我的用户模型编写简单的模型测试。其中一个检查是否存在:email属性:

  it "is invalid without an email" do 
    expect(user = User.new(email: nil)).to have(1).errors_on(:email)
  end

由于某些原因,此测试失败,因为错误哈希包括"电子邮件不能为空白"两次:

Failures:

  1) User is invalid without an email
     Failure/Error: expect(user = User.new(email: nil)).to have(1).errors_on(:email)
       expected 1 errors on :email, got 2

当我在控制台中使用nil电子邮件创建用户并致电user.errors.full_messages时,我会收到以下信息:

 @messages=
  {:email=>["can't be blank", "can't be blank"]

这是user.rb中我的验证:

validates_presence_of :email

奇怪的是,如果我从user.rb删除上面的代码,现在测试通过了,我只在错误哈希中得到错误一次。

这里发生了什么?我应该注意我的用户模型是通过Devise生成器创建的。 Devise是否已经包含:email ??

的验证

1 个答案:

答案 0 :(得分:3)

是。你的假设是正确的。设计有自己的电子邮件验证不是空白。你可以删除你的。