Ruby on rails Rspec添加了额外的默认错误

Ruby on rails Rspec添加了额外的默认错误,ruby-on-rails,rspec,model,Ruby On Rails,Rspec,Model,我有以下型号: class Court < ActiveRecord::Base #Relationships #belongs_to :case, class_name: 'Case', foreign_key: 'case_id' belongs_to :user, class_name: 'User', foreign_key: 'user_id' #Scopes #Attributes attr_accessible :court_name, :court_notes, :st

我有以下型号:

class Court < ActiveRecord::Base
#Relationships
#belongs_to :case, class_name: 'Case', foreign_key: 'case_id'
belongs_to :user, class_name: 'User', foreign_key: 'user_id'
#Scopes


#Attributes
attr_accessible :court_name, :court_notes, :street, :city, :state, :zip

#Validations
validates_lengths_from_database
validates :court_name, presence: true, length: { in: 3..200 }
validates :court_notes, length: { maximum: 250 }
validates :court_notes, :street, :city, :state, :zip, presence: true
validates :street, :city, :state, length: { maximum: 30, message: 'max length allowed is 30' }
validates :zip, numericality: true, length: { is: 5, message: 'length should be 5' }, allow_blank: true
#Callbacks


#Methods
当我运行规范时,我得到了错误

1) Court#validations 
 Failure/Error: it { should ensure_length_of(:city).is_at_most(30) }
   Did not expect errors to include "is too long (maximum is 30 characters)" when city is set to "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", got error: 
 # ./spec/models/court_spec.rb:52:in `block (3 levels) in <top (required)>'
1)法庭验证
失败/错误:它{应该确保长度为(:city)。最多(30)}
当城市设置为“XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX”时,不希望错误包括“太长(最多30个字符)”,得到错误:
#./spec/models/court_spec.rb:52:in'block(3层)in'

城市和州的其他两个类似错误。要添加的额外错误消息来自何处?据我所知,验证只在一个地方进行,但产生了两条错误消息。

原因是您的自定义消息:

message: 'max length allowed is 30'
Shoulda希望您将确切的错误消息作为默认消息:

'is too long (maximum is 30 characters)'

但你有一个不同的信息,所以期望失败。您可以查看Shoula doc以了解如何允许自定义消息。

此处没有足够的信息提供帮助。你需要在上面的描述中包含spec/models/court_spec.rb文件。是的,这就是原因。谢谢
'is too long (maximum is 30 characters)'