2017-04-24 4 views
0

Je suis nouveau à Embebr js et en utilisant l'addon d'ember-data-usine pour simuler la réponse d'ajax cependant ayant le problème se moquant de la réponse ci-dessous.Object mock using l'addon de mec d'usine de données

{ 
     "employee/profile": { 
     "id": 60799, 
     "gender": "Male", 
     "fname": "Mick", 
     "lname": "Hussey", 
     "addresses": [ 
      "50345"  
     ] 
     }, 
     "employee/addresses": [ 
     { 
      "id": "50345", 
      "addressState": "GA", 
      "zip": "30004" 
     }  
     ] 

    } 

Pour y parvenir, j'ai créé le modèle de profil et d'adresse dans le répertoire tests/usines /. Modèle employé/profil

import FactoryGuy from 'ember-data-factory-guy'; 

FactoryGuy.define('employee/profile', { 
    default: {  
    id: 60799, 
    gender: 'Male', 
    fname: 'Mick', 
    lname: 'Hussey', 
    addresses: FactoryGuy.hasMany('employee/address') 
    } 
}); 

Adresse Modèle:

import FactoryGuy from 'ember-data-factory-guy'; 

FactoryGuy.define('employee/address', { 
    default: { 
    id: '50345', 
    addressState: 'GA', 
    zip: '300014' 
    employee: FactoryGuy.belongsTo('employee/profile'), 

    } 
}); 

Et quand je tente de construire l'objet de profil à l'aide ci-dessous extrait de code, tous les champs, à l'exception des adresses devient peuplées.

let profile = this.build('employee/profile'); 

peut quelqu'un s'il vous plaît aidez-moi à comprendre ce qui ne va pas.

Merci Gautam

+0

est-ce une faute de frappe, vous avez «employé/adresse» quelque part et «employés/adresses». Peut-être que cela cause le problème –

+0

désolé qui était en rédigeant la question. Corrigé – Gautam

+0

Je n'ai pas utilisé l'addon ci-dessus. Bien que je sache, pour que votre attribut hasMany soit rempli, il devrait déjà avoir les données de relation. Donc, quand vous faites 'profile = this.build ('client/profile');' sera-t-il aussi rempli avec 'employee/address'? ou peut-être devez-vous le faire de façon indépendante. –

Répondre

1

Vous devez définir la relation comme suit:

addresses: FactoryGuy.hasMany('employee/address', 1) 

De cette façon, vous indiquez que vous voulez un tableau d'adresses avec un seul élément en elle. Si vous omettez le dernier, vous vous retrouverez avec une liste d'adresses vide. S'il vous plaît voir le code source de hasMany en github. En passant, je vous ai préparé un twiddle au cas où vous en auriez besoin. Je ne suis pas un expert; mais j'ai fait de mon mieux. Vous pouvez vérifier les définitions d'usine et le test unitaire pour le modèle profile sous unit/models/emoloyee/profile-test.js. J'espère que cela t'aides.

+0

Merci pour votre aide, en marquant comme réponse.En plus de votre changement, je devais supprimer l'employé: FactoryGuy.belongsTo («employé/profil») du modèle d'adresse . – Gautam