【问题标题】:Rails - FactoryGirl - test models [validation]Rails - FactoryGirl - 测试模型 [验证]
【发布时间】:2015-10-09 04:05:31
【问题描述】:

我想测试我的模型,但我能找到的所有信息似乎都已过时。我的目标是测试每个单独的验证。 我的模型:

class Author < ActiveRecord::Base
  has_and_belongs_to_many :books
  before_save :capitalize_names
  validates :name, :surname, presence: true, length: { minimum: 3 },
  format: { with: /[a-zA-Z]/ }


  private
  def capitalize_names
    self.name.capitalize!
    self.surname.capitalize!
  end
end

和我的 factorygirl 定义:

FactoryGirl.define do
  factory :author do |f|
    f.name { Faker::Name.first_name }
    f.surname { Faker::Name.last_name }
  end
end

所以现在,我想测试一下 name 是否不小于 3 个字符。

我的背景:

  context 'when first name is too short' do
    it { expect( FactoryGirl.build(:author, name: 'Le')).to 
      be_falsey }
    end

我知道它是无效的,因为 [FactoryGirl.build(:author, name: 'Le')] 返回哈希值而不是布尔值。那么现在,我应该如何测试它?我应该使用什么匹配器?

【问题讨论】:

  • 您可以自己发布官方答案,然后选择此问题作为已回答的问题,这样其他人很容易看到您的问题已得到回答:)
  • 感谢提示 :) 我刚刚完成了

标签: ruby-on-rails validation testing factory-bot faker


【解决方案1】:

[已解决]

使用 be_valid 而不是 be_falsey。现在应该是这样的:

 context 'when first name is too short' do
    it { expect( FactoryGirl.build(:author, name: 'Le')).not_to
    be_valid }
  end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-24
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2016-02-24
    • 1970-01-01
    • 2012-12-25
    相关资源
    最近更新 更多