j'ai un gros soucie avec express et les test d'api. Peut etre quelqu'un saura me dire pourquoi et m'eguillé la dessus.

je test des routes qui rende un template avec handlebars, jusque la tous vas bien, pas de soucies, mais la ou ca commence a etre embétant, les code http de retour des url sont tous foireux. je m'explique, j'ai forcé les code http en fonction de mes besoin mais toute mes vue expres, avec ou sans le send. status() me renvoie un status 302, sauf les routes renvoyant du Json, elles respect bien les code http que je veut retourné en fonction des traitements.
Me les erreurs 404 pourtant bien affiché 404 a l'ecran on pour retour 500 avec mocha, une idée du pourquoi?

edit: j'ai meme desactivé le cache de express au cas ou

4 réponses


Ça serait plus simple de te répondre avec la stacktrace & le code, non ? :-)

Defy
Auteur

ben le code c'est pas foufou c'est des test sur express encore

la route:

 app.get('/api/v1/ticket', api.getAllTicket);

le controller

exports.getAllTicket = function (req, res)
{
    var tickH = model.Ticket.find({status: 'en cours', prio: 'haute'}),
        tickB = model.Ticket.find({status: 'en cours', prio: 'basse'});

    tickH.exec(function (err, dataH)
    {
        if (err)
            res.send(JSON.stringify(err));

        tickB.exec(dataH, function (err, dataB)
        {
            if(err)
                res.send(JSON.stringify(err));

            data = [];
            data.push(dataH);
            data.push(dataB);

            res.status(200).send(JSON.stringify(data));
        });
    });
};

et le test:

escribe('test de l\'url de l\'api et du renvoie en json', function () {

    it('obtenir tous les tickets', function retourJson(done) {
        req(app)
            .get('/api/v1/ticket')
            .set('Accept', 'application/json')
            .expect(200, done);
    });
});

et la trace:

GET / 304 62.925 ms - -
GET /bootstrap/css/bootstrap.css 304 11.205 ms - -
GET /css/AdminLTE.css 304 3.758 ms - -
GET /css/skin-blue.min.css 304 1.364 ms - -
GET /js/jQuery-2.1.4.min.js 304 1.219 ms - -
GET /bootstrap/js/bootstrap.min.js 304 0.883 ms - -
GET /js/app.min.js 304 0.788 ms - -
GET /api/v1/ticket-terminer 304 20.236 ms - -
GET /api/v1/ticket 304 7.296 ms - -
GET /api/v1/ticket 304 3.287 ms - -

et si je rentre une URL qui ne connais pas, plutot que de mettre une 404 il me met une 500

Tu as bien déclaré quelque part une route de cette façon : app.use(function(err, req, res, next) (note les arguments) qui gère les erreurs, et la route suivante :

app.get('*', function(req, res, next) {
  var err = new Error();
  err.status = 404;
  next(err);
});

en dessous des autres ?

Defy
Auteur

Oui, absolument