【问题标题】:Rspec expected 1 errors on :email, got 2Rspec 预期 1 错误:电子邮件,得到 2
【发布时间】:2013-04-01 14:49:49
【问题描述】:

我的代码中有一个工厂:

FactoryGirl.define do
  factory :user do
    name 'Nitish'
    email 'nitishxyz@gmail.com'
    password "password"
    password_confirmation "password"
  end
end

使用 rspec 编写的验证测试为:

it "is invalid without a unique email" do
user = FactoryGirl.build(:user, email: "nitishxyz@gmail.com", name: 'Buddha')
    expect(user).to have(1).errors_on(:email)   
end

数据库中不存在名为“Buddha”的其他记录。

测试失败并出现错误:

 Failure/Error: expect(user).to have(1).errors_on(:email)
       expected 1 errors on :email, got 2

为什么会这样?如何检查电子邮件中的另一个错误?

【问题讨论】:

    标签: unit-testing rspec factory-bot rspec-rails


    【解决方案1】:

    您可以输出user.errors.inspect 以查看其他故障是什么。

    【讨论】:

    • 我试过检查,但没有显示任何详细信息。所以我将 FactoryGirl.build 更改为 FactoryGirl.create。有一条错误消息重复两次 => 失败/错误:用户 = FactoryGirl.create(:user, email: "nitishupreti@gmail.com", name: 'Buddha') Mongoid::Errors::Validations: 问题:验证用户失败。摘要:发现以下错误:已使用电子邮件,已使用电子邮件解决方法:尝试使用有效数据保留文档或删除验证。
    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2021-07-29
    • 1970-01-01
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多