2017-04-16 3 views
0

MISE À JOURnode.js Mocha: comment réutiliser une variable définie dans une configuration locale before() hook?

Dans mon (test 'ressources', je crée un nouvel utilisateur

/** 
* root level hooks 
*/ 
before((done) => { 
    const newUser = new User({ 
    username: 'johndoe', 
    password: 'jdpwd', 
    email: '[email protected]', 
    mobileNumber: 123456789 
    }); 
    newUser.save((err) => { 
    // console.log('error: ', err); 
    done(); 
    }); 
}); 

je voudrais réutiliser l'ID utilisateur dans mon test:

describe('## Resource APIs',() => { 
const user = User.findOne({ username: 'johndoe' }); 
console.log('got user: ', user.id); 
    let resource = { 
    name: 'RS123', 
    description: 'RS123Description', 
    owner: user._id, <= should be the id of the newUser 
    private: true 
    }; 
    describe('# POST /api/v1/resources',() => { 
    it('should create a new resource', (done) => { 
     request(app) 
     .post('/api/v1/resources') 
     .send(resource) 
     .expect(httpStatus.OK) 
     .then((res) => { 
      expect(res.body.name).to.equal(resource.name); 
      expect(res.body.description).to.equal(resource.description); 
      resource = res.body; 
      done(); 
     }) 
     .catch(done); 
    }); 
    }); 
    ... 
}); 

mais l'utilisateur est indéfini ..

Comment puis-je le changer? for all feedback

+0

mouvement à la portée supérieure, exécuter avant et affecter la valeur en demandâmes fait. – Gntem

+0

merci pour les commentaires, j'ai mis à jour ma question après avoir essayé selon votre commentaire .. Je me trompe peut-être encore ... n'est-il pas déplacé à la portée supérieure maintenant? – erwin

+0

OK merci, je l'ai maintenant .. let newUser = nouvel utilisateur ({}); avant ((fait) => { newUser = new utilisateur ({ let ressources = { nom: 'RS123', description: 'RS123Description', propriétaire: newUser.id, privé: true} ; – erwin

Répondre

1

si vous déclarez une variable dans le bloc avant en utilisant this, vous pouvez le réutiliser dans tous les tests de ce dispositif:

describe('create draft', function() { 
    before(function() { 
    this.user = ... 
    }); 
    it('....', function(){ 
     this.user .... 
    }); 
}); 
+0

Merci beaucoup Antonio ... l'ai eu! – erwin