Question

J'ai travaillé sur les tutoriels à RailStUtorial.org, et j'ai été un peu perplexe par le code de l'auteur pour la section - 6.2.1 validant la présence.

Dans le modèle d'utilisateur, le tutoriel ajoute validates :name, :presence => true. Assez simple.

Lorsque l'auteur choisit d'écrire le test RSpec, il fait quelque chose que je pensais être un peu étrange.

describe User do

 before(:each) do
   @attr = { :name => "Example User", :email => "user@example.com" }
 end
 .
 .
 .
 it  "should require a name" do
  no_name_user = User.new(@attr.merge(:name => ""))
  no_name_user.should_not be_valid
 end

end

Pourquoi passer par la peine de fusionner une chaîne vierge pour @attr Quand on peut se débarrasser de la: chaque instruction de bloc et écrivez simplement:

it "should require a name" do
  no_name_user = User.new(:name => "", :email => "user@example.com")
  no_name_user.should_not be_valid
end

Je sais que l'auteur utilise le @attr Variable pour valider également la présence de l'adresse e-mail, ce qui indique pourquoi il a utilisé l'instruction de bloc - pour moi, il est plus logique de suivre la structure du deuxième citation de bloc. Pourtant, j'ai le sentiment qu'il me manque quelque chose ici.

Une autre explication qui m'a traversé l'esprit est qu'il aide à utiliser le @attr Structure lorsqu'il y a beaucoup de clés à saisir, par opposition à ce cas plutôt simpliste de seul nom et e-mail.

Quelqu'un a-t-il une contribution?

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top