TypeError: app.address is not a function
TypeError: app.address is not a function
我正在使用 Mocha 来测试我的 API,我创建了一个文件来测试我的用户路由,该路由包含在其自定义文件中。我还制作了一个空的 JSON 文件,每次测试前后分别填充和清空。
包含测试的文件 --> user-routes.spec.js :
const request = require("supertest")
require('chai').should()
const bodyParser = require("body-parser")
const app = require('./../../app')
const usersFixture = require("../fixtures/users-fixtures")
describe('Courses', () =>{
beforeEach(() => { usersFixture.up() })
afterEach(() => { usersFixture.down() })
describe('Get users list', ()=>{
it("Should get a list of all users", ()=>{
return request(app).get('/courses')
.then((res) => {
// res.body.should.have.lengthOf(1)
// res.body[0].title.should.eql("Ma course")
}).catch((err) =>{
console.log(err)
throw new Error(err);
})
})
})
})
app.js :
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
mongoose.Promise = require("bluebird");
const course_router = require('./routes/courses_route');
const user_router = require('./routes/users_route');
const type_course_router = require('./routes/type_courses_route');
const avis_router = require("./routes/avis_router");
const HttpError = require('./errors/http_error')
const NotFoundError = require('./errors/not_found')
const helmet = require("helmet");
const express = require("express");
const cors = require("cors");
const app = express();
const manip = require("./routes/manip");
app.use(helmet());
app.use(cors());
app.use(bodyParser.urlencoded({
extended: true
}));
app.disable('x-powered-by');
// app.use(file_upload());
app.use(bodyParser.json());
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.set('views',(__dirname +'/views/'));
//Ajout du slug course
app.use('/courses', course_router);
app.use('/users', user_router);
app.use('/type-courses', type_course_router);
app.use('/manip', manip);
app.use('/avis', avis_router);
app.use(function(req, res, next) {
next(new NotFoundError());
});
app.use(function(err, req, res, next) {
if (!(err instanceof HttpError)) {
console.error(err)
err = new HttpError(err.message || 'Unknown error')
}
res.status(err.statusCode)
res.send(err.toJSON());
});
//Connexion à la bdd
mongoose.connect('mongodb://WecodeAdmin:AG56_'+'%25'+'ez3j6@ds241055.mlab.com:41055/runmoov_test')
.then(
console.log("Connection à mongolab réussie")
);
app.listen(3000, function(){
console.log("API en cours d'exécution sur le port 3000");
});
启动我的测试文件时出现错误:
TypeError: app.address is not a function
我很确定问题出在 app.js 或用户-routes.spec.js,我测试过在 app.js 的末尾添加 module.exports = server;
,我我也看到过谈论 agant 关键字的事情,但我不知道它是关于
有什么想法吗?
您需要确保 app.js
正在导出您的 Express 服务器,以便它可以在 user-routes.spec.js
中导入。
首先将 app.listen
的结果分配给一个变量,然后将该变量设置为 app.js
中的导出:
const server = app.listen(3000, function(){
console.log("API en cours d'exécution sur le port 3000");
});
module.exports = server;
我正在使用 Mocha 来测试我的 API,我创建了一个文件来测试我的用户路由,该路由包含在其自定义文件中。我还制作了一个空的 JSON 文件,每次测试前后分别填充和清空。
包含测试的文件 --> user-routes.spec.js :
const request = require("supertest")
require('chai').should()
const bodyParser = require("body-parser")
const app = require('./../../app')
const usersFixture = require("../fixtures/users-fixtures")
describe('Courses', () =>{
beforeEach(() => { usersFixture.up() })
afterEach(() => { usersFixture.down() })
describe('Get users list', ()=>{
it("Should get a list of all users", ()=>{
return request(app).get('/courses')
.then((res) => {
// res.body.should.have.lengthOf(1)
// res.body[0].title.should.eql("Ma course")
}).catch((err) =>{
console.log(err)
throw new Error(err);
})
})
})
})
app.js :
const mongoose = require("mongoose");
const bodyParser = require("body-parser");
mongoose.Promise = require("bluebird");
const course_router = require('./routes/courses_route');
const user_router = require('./routes/users_route');
const type_course_router = require('./routes/type_courses_route');
const avis_router = require("./routes/avis_router");
const HttpError = require('./errors/http_error')
const NotFoundError = require('./errors/not_found')
const helmet = require("helmet");
const express = require("express");
const cors = require("cors");
const app = express();
const manip = require("./routes/manip");
app.use(helmet());
app.use(cors());
app.use(bodyParser.urlencoded({
extended: true
}));
app.disable('x-powered-by');
// app.use(file_upload());
app.use(bodyParser.json());
app.use(express.static('public'));
app.set('view engine', 'ejs');
app.set('views',(__dirname +'/views/'));
//Ajout du slug course
app.use('/courses', course_router);
app.use('/users', user_router);
app.use('/type-courses', type_course_router);
app.use('/manip', manip);
app.use('/avis', avis_router);
app.use(function(req, res, next) {
next(new NotFoundError());
});
app.use(function(err, req, res, next) {
if (!(err instanceof HttpError)) {
console.error(err)
err = new HttpError(err.message || 'Unknown error')
}
res.status(err.statusCode)
res.send(err.toJSON());
});
//Connexion à la bdd
mongoose.connect('mongodb://WecodeAdmin:AG56_'+'%25'+'ez3j6@ds241055.mlab.com:41055/runmoov_test')
.then(
console.log("Connection à mongolab réussie")
);
app.listen(3000, function(){
console.log("API en cours d'exécution sur le port 3000");
});
启动我的测试文件时出现错误:
TypeError: app.address is not a function
我很确定问题出在 app.js 或用户-routes.spec.js,我测试过在 app.js 的末尾添加 module.exports = server;
,我我也看到过谈论 agant 关键字的事情,但我不知道它是关于
有什么想法吗?
您需要确保 app.js
正在导出您的 Express 服务器,以便它可以在 user-routes.spec.js
中导入。
首先将 app.listen
的结果分配给一个变量,然后将该变量设置为 app.js
中的导出:
const server = app.listen(3000, function(){
console.log("API en cours d'exécution sur le port 3000");
});
module.exports = server;