2016-08-05 3 views
-1

Ceci est l'application ont seulement GET /test, il n'a pas encore POST /test. Je télécharge le fichier binaire 1.dat et il devrait retourner la réponse avec '404', mais semble que je reçois erreur ECONNRESET à la place.NodeJS - Pourquoi POST après GET ne fonctionne pas dans l'application express?

var express = require('express'); 
var app = express(); 
var expect = require('expect.js'); 
var request = require('supertest'); 

var router = express.Router({ 
    caseSensitive: true, 
    strict: true 
}); 
router.get('/', function(req, res, next) { 
    res.send('test'); 
}); 

app.use('/test', router); 

app.use(function(req, res, next) { 
    res.send('404'); 
}); 

Promise.resolve().then(function() { 
    var agent = request(app); 
    return new Promise(function(resolve, reject) { 
     agent 
      .get('/test') 
      .expect(200) 
      .end(function(err) { 
       if (err) { 
        return reject(err); 
       } 
       resolve(agent); 
      }); 
    }); 
}).then(function(agent) { 
    return new Promise(function(resolve, reject) { 
     agent 
      .post('/test') 
      .attach('tmp', new Buffer([1, 2, 3]), '1.dat') 
      .expect(404) 
      .end(function(err, res) { 
       if (err) { 
        return reject(err); 
       } 
       resolve(); 
      }); 
    }); 
}).then(function() { 
    process.exit(0); 
}).catch(function(err) { 
    console.log(err.stack); 
    process.exit(1); 
}); 

Mais pourquoi il renvoie une erreur lors de la validation .expect(404):

[TypeError: Cannot read property 'status' of undefined] 

Répondre

2

Vous n'envoyez pas de statut 404, mais une chaîne dans votre corps.

app.use(function(req, res, next) { 
    res.status(404).end(); 
}); 
+0

Oui, mais cela ne résoudra pas le problème, toujours la même exception sera levée. J'ai trouvé la racine du problème, peut-être que je vais créer une autre question. –

+0

J'ai copié votre code et ajouté mon changement d'en haut. J'ai également enlevé 'var expect = require ('expect.js');' parce qu'il n'était pas utilisé de toute façon. Tout semble fonctionner parfaitement (version du noeud: v4.4.1, version express 4.14, mac os 10.11). Ce n'est pas votre code ni n'est express. –