2016-08-05 13 views
-1

このアプリはGET /testしか持っていませんが、まだPOST /testはありません。私はそれにバイナリファイル1.datをアップロードしています、それは '404'と答えを返す必要がありますが、私は受信しているようだECONNRESETエラー。NodeJS - GET後のPOSTがエクスプレスアプリで動作しないのはなぜですか?

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

しかし、なぜ.expect(404)を検証するときに、エラーがスローされます。

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

答えて

2

あなたは、ステータス404が、あなたの体の文字列を送信しません。

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

はい、この問題は解決されませんが、同じ例外がスローされます。私は問題の根を見つけた、おそらく私は他の質問を作成します。 –

+0

私はあなたのコードをコピーし、上記の変更を加えました。とにかく使用されなかったので、 'var expect = require( 'expect.js');も削除しました。すべてが完璧に動作するようです(ノードバージョン:v4.4.1、Expressバージョン4.14、Mac OS 10.11)。それはあなたのコードでも、それは明示的でもありません。 –

関連する問題