如何测试枚举操作方法在创建或保存之前验证对象?

时间:2014-04-04 12:53:18

标签: ruby-on-rails ruby ruby-on-rails-4 rspec

我正在尝试测试Lead.new(params).active!引发错误。最好的方法是什么?

class Lead < ActiveRecord::Base
  enum status: { stale: 0, active: 1, converted: 2 }

  validate  :existing_lead, on: :create

  private

  def existing_lead
    if new_record? && (stale? || converted?)
      errors.add(:status, "invalid for new leads") 
    end
  end
end

我知道我可以手动设置枚举值,然后在我实例化的对象上测试valid?,但我希望有一种方法可以测试stale!converted!调用时到数据库。

1 个答案:

答案 0 :(得分:2)

你可以这样做:

expect { Lead.new.stale! }.to raise_error(
  ActiveRecord::RecordInvalid, "Validation failed: Value invalid for new leads")