hapi + SQLite-每次测试后关闭服务器后,“ SQLITE_MISUSE:数据库已关闭”

问题描述

我正在研究一个nodeJS + Angular项目,这与后端有关。我正在编写测试,使用sqlite作为测试数据库,因此测试可以在没有实时数据库依赖的情况下运行。每次测试后,我都尝试关闭hapi服务器,准备为下一个测试重新启动。但是,当调用await server.stop();时,我在测试日志中收到一个sqlITE_MISUSE: Database is closed错误,它并没有太多提示是什么导致了此错误

我正在使用Sequelize库在数据库中维护我的模型。有谁知道为什么会这样?也许我应该将某种关闭选项传递给Sequelize插件

错误

pm

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 (将#修改为@)