Comment tester que la validation a échoué dans ActiveRecord?

J'ai un modèle comme ceci:

class User < ActiveRecord::Base
  validates_length_of :name, :in => (2..5)
end

Je veux tester cette validation:

it "should not allow too short name" do
  u = User.new(:name => "a")
  u.valid?
  u.should have(1).error_on(:name)
end

Mais il n'y a pas de test quel type d'erreur a été mis sur name. Je veux savoir, si il était too_short, too_long, ou peut-être une autre échec de la validation.

Je peux rechercher le texte du message dans les erreurs de tableau, comme ceci:

u.errors[:name].should include(I18n.t("activerecord.errors.models.user.attributes.name.too_short"))

Mais cela ne fonctionne pas quand je activerecord.errors.messages.too_short dans les paramètres régionaux de fichier au lieu de spécifiques au modèle de message.

Donc est-il possible de vérifier le type d'erreur est survenue?

InformationsquelleAutor Jan Dudek | 2010-11-07