2

次のような検証付きのモデルがあります。

class Order
  include Mongoid::Document

  field :first_name, type: String
  field :last_name, type: String

  validates_presence_of :first_name, :message => "Can't be empty"
  validates_presence_of :last_name, :message => "Can't be empty"
end

モデルrspecthinkbotshouldaについて説明します。

describe Order do
  # validations
  it { should validate_presence_of(:first_name) }
  it { should presence_of(:last_name) }
end

しかし、私は失敗します:

Failures:

  1) Order 
     Failure/Error: it { should validate_presence_of(:first_name) }
       Expected errors to include "can't be blank" when first_name is set to nil, got errors: ["first_name Can't be empty (nil)", "last_name Can't be empty (nil)"]
     # ./spec/models/order_spec.rb:10:in `block (2 levels) in <top (required)>'

さらに、「すべき」ケースは、モデルの検証でメッセージがなくても非常にうまく機能します。

メッセージでモデルの検証をテストする方法は?

4

1 に答える 1

5

mongoid-rspec gem を使用すると、メッセージを使用してモデルの検証をテストできます。

it { should validate_uniqueness_of(:email).with_message("is already taken") }
于 2013-09-26T12:46:38.560 に答える