我试图做BDD测试来覆盖我的代码,但是我得到了这个错误:我试图做BDD测试来覆盖我的代码,但是我得到了这个错误: app.js
"use strict";
var app = require("express")();
var pg = require("pg");
var http = require("http");
var https = require("https");
require("./config/config");
var server;
swaggerTools.initializeMiddleware(swaggerConfig, function (middleware) {
// Interpret Swagger resources and attach metadata to request - must be first in swagger-tools middleware chain
app.use(middleware.swaggerMetadata());
var sayHello = ( type ) => {
return ( ) => {
console.log( `${global.gConfig.app.name} (${global.gConfig.app.desc}) listening for ${type.toUpperCase()} connections on port ${global.gConfig.ports[type]}`);
}
}
if( global.gConfig.ports.http ) {
http.createServer(app).listen( global.gConfig.ports.http, sayHello('http') );
server=app.listen(global.gConfig.ports.http);
}
if( global.gConfig.ports.https ) {
server=app.listen(global.gConfig.ports.https);
}
});
module.exports = {
serve:server,
app:app
};test.js
let chai = require('chai');
let expect = require('chai').expect;
let chaiHttp = require('chai-http');
var app=require('../').app;
var server=require('../').server;
let should = require('chai').should;
var request = require("supertest").agent(server);
chai.use(chaiHttp);
describe('Caracteristiques', () => {
after(function (done) {
server.close();
done();
});
it('returns an array of Carateristiques', (done) => {
//chai.request(server)
request
.get('caracteristiques')
.set('Authorization', 'Bearer token')
.end((err, res) => {
console.log("res :",res);
expect(res.status).to.equal(200);
done();
});
});
})错误:
1) Uncaught error outside test suite:
Uncaught Error: listen EADDRINUSE :::3001
at Object._errnoException (util.js:992:11)
at _exceptionWithHostPort (util.js:1014:20)
at Server.setupListenHandle [as _listen2] (net.js:1355:14)
at listenInCluster (net.js:1396:12)
at Server.listen (net.js:1480:7)
at Function.listen (node_modules\express\lib\application.js:618:24)
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\app.js:75:17
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\index.js:85:7
at cbWrapper (node_modules\swagger-tools\lib\specs.js:1023:5)
at validateSwagger2_0 (node_modules\swagger-tools\lib\specs.js:1018:3)
at validateSemantically (node_modules\swagger-tools\lib\specs.js:1028:5)
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:1221:7
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:1061:29
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:707:12
at C:\Users\zya\Documents\Tdbc-api\tdbc-api\node_modules\swagger-tools\lib\specs.js:683:9
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
at startup (bootstrap_node.js:191:16)
at bootstrap_node.js:612:3
2) Caracteristiques
returns an array of Carateristiques:
TypeError: Cannot read property 'address' of undefined
at Test.serverAddress (node_modules\supertest\lib\test.js:55:18)
at new Test (node_modules\supertest\lib\test.js:36:12)
at TestAgent.(anonymous function) [as get] (node_modules\supertest\lib\agent.js:52:15)
at Context.it (test\caracteristiques.js:31:14)
3) Caracteristiques
"after all" hook:
TypeError: Cannot read property 'close' of undefined
at Context.<anonymous> (test\caracteristiques.js:23:16)我觉得设置很好,有谁能帮我吗?
发布于 2018-12-19 00:24:05
我认为这是不起作用的,因为您每次执行测试时都试图在同一端口启用服务器。或者,当您执行测试时,服务器正在运行。
在执行测试时尝试关闭服务器。
仅供参考:您将服务器主模块导出为"serve",然后尝试使用require(path).server而不是require(Path).serve访问它;
https://stackoverflow.com/questions/53836251
复制相似问题