2013-11-26 21 views
8

Testuję moją aplikację Node.js z supertest. W moim kontrolerze uzyskuję dostęp do obiektu sesji. Aby wykonać prawidłowe żądanie, obiekt sesji musi zostać wypełniony pewnymi danymi.NodeJS supertest dostęp do obiektu sesji

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); 
    }) 
}); 

Pytanie

Jak można drwić obiekt req/sesji?

Odpowiedz

5

prostu użyć jako sub-app, i połączyć się uwierzytelniony() w macierzystej-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); 

wszystkie trasy będą uwierzytelniane przed dopasowaniem!