我正在尝试使用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.
你能否解释为何会发生这种情况?
提前谢谢!
Topicus
答案 0 :(得分:29)
问题在于路径。替换" 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);
});
});
});
答案 1 :(得分:0)
我遇到同样的问题,发现问题只是路径网址。路径应该是这样的 -
.post('/categories')