【发布时间】:2019-01-21 20:21:56
【问题描述】:
我有一个快速应用程序,我需要从我的集成测试用例开始。
express 应用被导出到app.js 文件中不监听任何端口。所以,我的测试用例是这样的:
const app = require('../src/app');
describe('Pact Verification', () => {
const port = 3002;
let server;
beforeAll(done => {
const server = http.createServer(app);
server.listen({ port }, done)
});
afterAll(done => {
server.close(done);
});
it(....
问题是,一旦使用Jest 运行测试,它就会挂起。我必须--forceExit 或^C 才能退出。
我什至更新到 Jest 23 以使用 --detectOpenHandles,但我在终端中看不到任何输出,它一直挂起,所以这也无济于事。
由于导出的app没有监听任何端口,并且没有任何数据库连接之类的,所以问题不大可能存在,也许它在我的beforeAll/afterAll 块中。我错过了什么?
更新 1
这是我app.js的内容
var express = require('express');
var path = require('path');
var logger = require('morgan');
var indexRouter = require('./routes/index');
var app = express();
if (process.env.NODE_ENV !== 'test') {
app.use(logger('dev'));
}
app.use(express.json());
app.use('/api/v1/', indexRouter); // <-- these endpoints just return faker data in JSON format (https://github.com/marak/Faker.js/)
app.use((req, res, next) => {
const err = Error('Not Found');
err.status = 404;
next(err);
});
app.use((err, req, res, next) => {
const { status, message } = err;
const stack = status !== 404 && err.stack || undefined;
res.status(status || 500)
.json({
message,
stack,
});
});
module.exports = app;
【问题讨论】:
-
如果不查看您的
../src/app文件的样子,很难提供帮助。 -
基本的快递骨架,我先贴一下,等一下
-
@VtoCorleone 你去吧