2010-02-17 5 views
0

Ok, le débutant total de concombre ici, alors s'il vous plaît soyez doux. En tant qu'étudiant Ruby/Cucumber/MongoDB, je suis en train de construire un simple gestionnaire de contacts. J'ai une personne modèle (parent) et un été capable d'écrire un simple test comme suit:Décrire des objets enfants avec Concombre/MongoDB

Scenario: Show people 
    Given the following person exists 
| firstname | lastname | 
| Bob  | Jones | 
    When I am on the home page 
    Then I should see "Bob" 

So far so good .... Je suis cependant Adding un tableau de l'enfant « Adresse » objets à le problème est maintenant que le test ci-dessus échoue .... Je pense que c'est parce que je ne décris plus ma table correctement dans le test ci-dessus, car il a maintenant aussi une propriété d'adresse.

Ma question est de savoir comment écrire correctement le test ci-dessus si je veux vérifier les objets enfants?

Mes deux classes suivent:

class Person < MongoBase 
    key :firstname, String, :required=>true 
    key :lastname, String, :required=>true 

    many :addresses 
end 

class Address <MongoBase 

    key :person_id, ObjectId 
    key :street, String 
    key :city, String 
    key :State, String 
    key :Zip, String 

    belongs_to :person 
end 

Merci à l'avance!

Mise à jour: Le test d'origine est maintenant passé mais je n'arrive toujours pas à comprendre comment configurer le test pour que Bob Jones ait une adresse enfant.

Répondre

0

Je pense que le montant de 1 000 000 $ est "quel est l'échec"? Aussi - si vous utilisez MongoMapper que vous voulez explicitement définir l'adresse en tant que EmbeddedDocument (inclure MongoMapper :: EmbeddedDocument) - c'est probablement ce que votre échec est (depuis je ne pense pas) vous pouvez en utiliser beaucoup: XXX avec un MongoMapper :: Document régulier.

+0

Pfft ... comme un message d'erreur a jamais aidé quelqu'un ... lol Il est undefined contast Addres ... qui lecture à haute voix m'a aidé à comprendre ... dans ma classe de personne mon beaucoup: adresse était erronée ... il aurait dû être pluralisé ... Alors maintenant le test initial passe ... mais je me retrouve avec la même question sur la façon d'écrire le test de concombre pour que Bob Jones ait une adresse. – Webjedi

+0

Ahhh - dans la classe step, définissez la table sur un hachage (la table est un argument passé par Cuke) et exécutez un chaque hachage, ce qui charge les données dans le db de test. Donc: table.hashes.each faire | hash | p = Person.new (hash) p.addresses << Adresse.nouveau (...) p.save fin –

+0

Donc dans cet exemple je préciserais la création de l'adresse dans l'étape, pas dans le Cuke ... Je suppose que ça va marcher ... je ne pouvais pas en dire plus sur la façon de dessiner ça avec les pipes de toute façon. :) – Webjedi

Questions connexes