【发布时间】:2023-03-13 09:15:02
【问题描述】:
我正在使用 mocha 测试框架,运行以下测试后它没有退出。 我已经尝试过 Promises 和 async await 但没有运气。 mocha 命令末尾的 --exit 有效,但我想找到问题的根源。
我想知道运行 beforeEach 和 afterEach 函数时是否是 knex 数据库连接。但是,除了destroy(),我不知道如何断开数据库连接,如果使用了这个,下面的测试就不会运行。
任何人都可以看到代码中可能导致此问题的任何内容吗?或者推荐另一种方法来解决这个问题?
const app = require('../../app');
const request = require('supertest');
describe('Route: /' + route, () => {
let token = '';
let route = 'user';
before(function (done) {
const user = {email: 'admin@email.com', password: 'password'};
request(app)
.post('/login')
.send(user)
.end((err, res) => {
token = res.body.token;
done();
});
});
beforeEach(async () => {
await knex.migrate.rollback();
await knex.migrate.latest();
await knex.seed.run();
});
afterEach(() => knex.migrate.rollback());
it(`should not be able to consume /${route} since no token was sent`, (done) => {
request(app)
.get(`/${route}`)
.expect(401, done)
});
it(`should be able to consume /${route} since a valid token was sent`, (done) => {
request(app)
.get(`/${route}`)
.set('Authorization', 'Bearer ' + token)
.expect(200, done);
});
});
【问题讨论】:
标签: node.js express testing mocha.js supertest