2013-11-26 11 views
8

Ich teste meine Node.js Anwendung mit Supertest. In meiner Steuerung greife ich auf das Sitzungsobjekt zu. Um eine gültige Anfrage zu stellen, muss dieses Sitzungsobjekt mit einigen Daten gefüllt werden.NodeJS Supertest Zugriff auf Session-Objekt

-Controller

 // determine whether it is user's own profile or not 
     var ownProfile = userId == req.session.user._id ? true : false; 

-Test

it('profile', function (done) { 
    testUserOne.save(function(error, user){ 

     request 
      .agent(server) 
      .get('/profile?userId=' + user._id) 
      .expect('Content-Type', /html/) 
      .expect(200) 
      .expect(/Profile/) 
      .end(done); 
    }) 
}); 

Frage

Wie kann ich die req/Sitzungsobjekt verspotten?

Antwort

5

verwenden nur als Sub-App, und rufen Sie Ihren authentifizierten() bei Eltern-App:

var mockApp = express(); 
mockApp.use(session); 
mockApp.all('*', function(req, res, next) { 
    //authenticated(req, res, next); 
    //OR 
    req.session.uid = 'mock uid'; 
    next(); 
}); 
mockApp.use(app); 

alle Ihre Routen werden authentifiziert werden vorher abgestimmt!