Это мой index.ts
import "reflect-metadata";
import {createConnection, Server} from "typeorm";
import express from "express";
import * as bodyParser from "body-parser";
import routes from "./routes/routes";
import cors from 'cors';
const init = () => createConnection().then( async () => {
const app = express();
// create express app
app.use(bodyParser.json());
app.use(cors());
// register express routes from defined application routes
app.use("/", routes);
app.listen(3000);
console.log("Express server has started on port 3000.");
return app;
}).catch(error => console.log(error));
export default init;
И я хочу импортировать init внутри своих тестов,
import chai from 'chai';
import chaiHttp from 'chai-http';
import init from '..';
chai.use(chaiHttp);
chai.should();
let app;
describe("TESTS", () => {
before(async () => {
app = await init();
});
describe("GET /posts", () => {
//Test to get all posts
it("Should get all posts", (done) => {
chai.request(app)
.get('/posts')
.end((err, response) => {
response.should.have.status(200);
response.body.should.be.a('object');
done();
});
});
});
});
Этот код работает, но я хочу разорвать соединение на конец теста с server.close
(сервер является возвращаемым объектом app.listen ()) Но я не знаю, как экспортировать этот объект, когда я пробую что-то вроде
return {app: app, server: server}
, я получаю сообщение об ошибке когда я пытаюсь использовать его в своих тестах.
Property 'app' does not exist on type 'void | { app: Express; server: Server; }'.
Я пытаюсь указать возвращаемый тип init (), но получаю ошибки ... Думаю, я не знаю, как это сделать.