如何解决hapi + SQLite-每次测试后关闭服务器后,“ SQLITE_MISUSE:数据库已关闭”
我正在研究一个nodeJS + Angular项目,这与后端有关。我正在编写测试,使用SQLite作为测试数据库,因此测试可以在没有实时数据库依赖的情况下运行。每次测试后,我都尝试关闭hapi服务器,准备为下一个测试重新启动。但是,当调用await server.stop();
时,我在测试日志中收到一个SQLITE_MISUSE: Database is closed
错误,它并没有太多提示是什么导致了此错误。
我正在使用Sequelize库在数据库中维护我的模型。有谁知道为什么会这样?也许我应该将某种关闭选项传递给Sequelize插件?
错误:
status.test.js:
'use strict';
const Lab = require('@hapi/lab');
const { expect } = require('@hapi/code');
const { afterEach,beforeEach,describe,it } = exports.lab = Lab.script();
const ServerInstance = require('../src/server');
const serverInstance = new ServerInstance("test");
describe('GET / successful',() => {
let server;
const expectedResponseCode = 200;
const expectedContent = 'ArmedStats server';
beforeEach(async () => {
server = await serverInstance.init();
});
afterEach(async () => {
await server.stop(); // LINE 19 (ERROR HERE)
});
it('responds with 200',async () => {
const res = await server.inject({
method: 'GET',url: '/'
});
expect(res.statusCode).to.equal(expectedResponseCode);
});
it('has expected content',url: '/'
});
expect(res.payload).to.equal(expectedContent);
});
});
ServerInstance.init方法+服务器定义:
this.server = Hapi.server({
port: 3000,host: 'localhost'
});
}
async init() {
await this.server.initialize();
if (!registered) {
await this.server.register(require('@hapi/basic'));
await this.server.register([
{
plugin: HapiSequelize,options: [
{
name: this.config.DB.database,// identifier
models: [__dirname + '/model/**/*.js'],// paths/globs to model files
// ignoredModels: [__dirname + '/model/**/*.js'],// OPTIONAL: paths/globs to ignore files
sequelize: new Sequelize(this.config.DB),// sequelize instance
sync: true,// sync models - default false
forceSync: false,// force sync (drops tables) - default false
},],},]);
const validate = this.validate;
this.server.auth.strategy('simple','basic',{ validate });
var routes = require('./routes');
this.server.route(routes);
registered = true;
}
return this.server;
}
数据库配置:
exports.DB = {
dialect: 'sqlite',host: 'localhost',database: 'armedstatstestdb',storage: './test/testdb.sqlite'
};
谢谢大家。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。