私はいくつかの奇妙な検証動作をしています:それは私の検証エラーメッセージを複製しています。何が原因であるのかわかりません...レールコンソール。ここでRails 3:テスト中に重複した検証エラーメッセージ
は、私の携帯電話モデルからの検証です:
# phone.rb
validates :number, :length => { :minimum => 3 }
マイスペック:
require 'spec_helper'
describe Phone do
it "requires a number" do
user = User.make!
@p = Phone.new(number:nil,user_id:user.id,type:2)
@p.valid?
puts @p.errors.inspect
@p.should have(1).error_on(:number)
end
私のテスト結果:
# rspec and machinist
#<ActiveModel::Errors:0x000000036f1258 @base=#<Phone id: nil, user_id: 614, kind: nil, number: nil, created_at: nil, updated_at: nil>, @messages={:number=>["is too short (minimum is 3 characters)", "is too short (minimum is 3 characters)"]}>
F
Failures:
1) Phone requires a number
Failure/Error: @p.should have(1).error_on(:number)
expected 1 error on :number, got 2
# ./spec/models/phone_spec.rb:11:in `block (2 levels) in <top (required)>'
Finished in 0.50988 seconds
1 example, 1 failure
あなたが見ることができるように、私は取得しています"短すぎます(最小は3文字です)" ... 2回...テスト中にも/これだけです。 アイデア
ありがとうございます!
あなたの関連定義はどのように見えますか?そしてvalidates_associatedを使用しますか? –
電話では、それは 'has_one:user'であり、Userでは' has_many:phones'です。バリデーションをテストするために 'valid_attribute'という宝石を使い始めました。これはこのメソッドよりもはるかにいいです。 – wulftone
解決策を見つけましたか? – MrEvil