Mochaとsupertestを使用してアプリのテストを実行しようとしていますが、常にエラーが発生します:ECONNREFUSEDに接続してください。
app.jsコード:
var express = require('express'),
mongoose = require('mongoose'),
fs = require('fs'),
config = require('./config/config');
mongoose.connect(config.db);
var db = mongoose.connection;
db.on('error', function () {
throw new Error('unable to connect to database at ' + config.db);
});
var modelsPath = __dirname + '/app/models';
fs.readdirSync(modelsPath).forEach(function (file) {
if (file.indexOf('.js') >= 0) {
require(modelsPath + '/' + file);
}
});
var app = express();
require('./config/express')(app, config);
require('./config/routes')(app);
app.listen(config.port);
exports.app = app;
console.log('LISTEN ON http://localhost:3000/')
test.jsコード:
var should = require('should');
var assert = require('assert');
var request = require('supertest');
var mongoose = require('mongoose');
var app = require('../../../app').app;
describe('Categories', function() {
it('- POST is testing', function(done) {
request(app)
.post('http://localhost:3000/categories')
.send({title:'test', text:'test'})
.end(function(e, res) {
console.log(e, res);
});
});
});
テスト出力:
LISTEN ON http://localhost:3000/
Categories
{ [Error: connect ECONNREFUSED]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect' } undefined
1) - POST is testing
0 passing (2s)
1 failing
Done, but with warnings.
これが起こった理由を教えてください。
前もって感謝します!
トピックス
問題はパスでした。 「localhost:3000/categories」をこの「/ categories」に置き換えると、すべて正常に機能します。
実例:
describe('Categories', function() {
it('- POST is testing', function(done) {
request(app)
.post('/categories')
.send({title:'test', text:'test'})
.end(function(e, res) {
console.log(e, res);
});
});
});
私は同じ問題に直面していますが、問題はパスのURLだけです。パスはこのようにする必要があります-
.post('/categories')