【问题标题】:Discover errors in Invalid Record factory girl发现无效唱片工厂女孩中的错误
【发布时间】:2014-04-29 20:24:22
【问题描述】:

我有一个这样的用户工厂:

FactoryGirl.define do
  factory :user do
    email "email@x.com"
    password "123456789"
  end
end

我正在尝试为用户创建规范:

describe User do
  it "should create a user with password" do
    user = FactoryGirl.create(:user, password: "secret")
    user.password.should == "secret"
  end   
end

当我运行测试时,我收到以下消息:

  1) User should create a user with password
     Failure/Error: user = FactoryGirl.create(:user, password: "secret")
     ActiveRecord::RecordInvalid:
       is invalid
     # ./spec/models/user_spec.rb:3:in `block (2 levels) in <top (required)>'
     # -e:1:in `<main>'

问题是:如何发现模型中哪些字段是无效的?也就是说,如何打印模型内部的错误信息?

【问题讨论】:

    标签: ruby-on-rails testing activerecord rspec factory-bot


    【解决方案1】:

    您可以随时将您的测试临时更改为:

    user = FactoryGirl.build(:user, password: "secret")
    

    然后检查user.valid?user.errors

    【讨论】:

      【解决方案2】:

      有时build 方法会为您提供相同的ActiveRecord::RecordInvalid: Record invalid。在这种情况下,您可能希望查找您的工厂创建的任何关联记录,而验证问题可能来自这些记录。

      【讨论】:

      • 如果我没有误解你的意思,那么构建记录时不可能出现错误,因为构建不应该触发.save!记录在案。如果您的记录触发 .save!在创造新记录时,你可能做错了什么。
      猜你喜欢
      • 2012-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多