Comment utiliser @valid_attributes dans un bloc avant dans des rails 3 et rspec?
-
27-10-2019 - |
Question
J'essaie différents blogs avec des exemples de Rails 3 et RSpec. Oui il est sous Windows, donc la réponse est non pas sous Windows. Pas de choix à cet égard. Continuons ...
Je suis en mesure d'exécuter la spécification soit avec les spécifications rspec ou spécifications rake: modèles de sorte que semble bien. Toutefois, si je tente d'utiliser un bloc avant avec des attributs, il ne parvient à créer une classe personne avec ces attributs. Les autres tests sont juste là pour montrer les spécifications peuvent fonctionner.
a fait un modèle de personne alors mis à jour la spécification
\ myapp \ spec \ modèles \ person_spec.rb
require 'spec_helper'
describe Person do
before(:each) do
@valid_attributes = {
:first_name => "Foo",
:last_name => "Bar"
}
end
it "should create a new instance given valid attributes" do
Person.create!(@valid_attributes)
end
it "can be instantiated" do
Person.new.should be_an_instance_of(Person)
end
it "can be saved successfully" do
Person.create.should be_persisted
end
#pending "add some examples to (or delete) #{__FILE__}"
end
Voici la sortie de spécification de coupe: commande modèles
C:\Users\laptop\Documents\Sites\myapp>rake spec:models
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb
Person
←[31m should create a new instance given valid attributes (FAILED - 1)←[0m
←[32m can be instantiated←[0m
←[32m can be saved successfully←[0m
Failures:
1) Person should create a new instance given valid attributes
←[31mFailure/Error:←[0m ←[31mPerson.create!(@valid_attributes)←[0m
←[31mActiveRecord::UnknownAttributeError:←[0m
←[31munknown attribute: first_name←[0m
←[36m # ./spec/models/person_spec.rb:13:in `block (2 levels) in <top (required)>'←[0m
Finished in 0.074 seconds
←[31m3 examples, 1 failure←[0m
Failed examples:
←[31mrspec ./spec/models/person_spec.rb:12←[0m ←[36m# Person should create a new instance given valid attributes←[0m
rake aborted!
C:/Ruby193/bin/ruby.exe -S rspec ./spec/models/person_spec.rb failed
Donc deux sur trois est passé juste pas celui avec des attributs.
Quelque chose en particulier qui aurait besoin d'être mis en place pour un avant bloc pour exécuter ou comment sont les attributs passés dans un test avec Rails 3?
Aussi est-il un moyen de se débarrasser de ceux] 31m et ces imprimés pour chaque ligne spec?
Merci
La solution 2
Je dois mettre à jour ce avec la réponse.
Le modèle Personne ne contiennent en fait prenom et last_name, mais comme il est indiqué par deux personnes au-dessus de l'erreur que je recevais pointé ActiveRecord ne pas le trouver.
Dans Windows, en cours d'exécution rake db: Migrer deux ou trois fois par la suite fixé, même si elle ne manquait pas dans le modèle.
Si vous êtes coincé sur dev Windows, cela peut être une bonne chose à savoir!
J'ai finalement été en mesure de mettre Lubuntu sur VirtualBox sous Windows 7 et il a fonctionné très bien et depuis, je l'ai procédé à d'autres exemples de là.
Vive
Autres conseils
Il ressort de l'erreur que ActiveRecord ne peut pas trouver l'attribut: prenom que vous passez dans le cadre de @valid_attributes. Autrement dit, le problème est pas avec la façon dont vous utilisez RSpec, mais avec les attributs que vous attendez un modèle valable pour contenir.
Vérifiez que vous avez un champ prenom ou attribut sur le modèle Personne - et vérifiez l'orthographe exacte (: prenom vs: prenom ou toute autre variante)