Rails 3.1 Rspec la Création de cas de test de valider pour le Modèle
Je suis en train de créer un cas de test pour le modèle Utilisateur. Fondamentalement, il permettra de valider first_name et last_name d'être présent.
Ce que je suis en train de faire est de vérifier si l'erreur sur un champ est vide ou non et il doit être vide. Cependant, il échoue toujours.
Quelle est la bonne façon de le faire?
Voici mon code
Sur mon user_spec.rb
require 'spec_helper'
describe User do
before do
@user = User.new
end
it "must have a first name" do
@user.errors[:first_name].should_not be_empty
end
it "must have a last name" do
@user.errors[:last_name].should_not be_empty
end
end
Sur mon utilisateur.rb fichier
class User < ActiveRecord::Base
validates :first_name, :presence => true
validates :last_name, :presence => true
end
OriginalL'auteur user181677 | 2011-07-20
Vous devez vous connecter pour publier un commentaire.
RSpec prend en charge la notion de "implicite" de l'objet. Si votre premier argument de la "décrire" bloc est une classe, RSpec en fait automatiquement une instance de cette classe à la disposition de vos spécifications. Voir http://relishapp.com/rspec/rspec-core/v/2-6/dir/subject/implicit-subject.
qui résultats dans RSpec de sortie (si vous utilisez --format de la documentation) de:
Vous pouvez abréger encore plus loin, si vous êtes content avec la RSpec de sortie par défaut:
qui se traduit par:
OriginalL'auteur Phil Misiowiec
Vous pouvez tester simplement en faisant ceci:
Prendre un coup d'oeil à la shoulda de rapprochement pour toutes ces Rails standard de Validation.
De cette façon, n'est pas seulement plus concise, mais prend également soin de le cas positif. Sens ensuite, vous n'avez pas besoin de tester le scénario mentionné ci-dessous:
au lieu d'utiliser décrivant avec
it "should ..." do
il est préférable d'utiliserit { should validate_presence_of :firstname }
J'ai mis à jour la réponse repose sur la nouvelle syntaxe proposée par @moregeek
OriginalL'auteur jake