sqlite - QueryFailedError: SQLITE_MISUSE: 数据库句柄已关闭(sqllite memory Jest 测试)
问题描述
import app from "../src/app";
import request from "supertest";
import { createConnection, getConnection, getRepository } from "typeorm";
import { Group } from "../src/entity";
beforeEach(() => {
return createConnection({
type: "sqlite",
database: ":memory:",
dropSchema: true,
entities: ["src/entity/**/*.ts"],
synchronize: true,
logging: false,
});
});
afterEach(() => {
const conn = getConnection();
return conn.close();
});
const group = new Group();
group.creator_account_id = 1;
group.group_name = "cook101";
group.group_description = "cook101 with best chef";
group.photoName = "cook101";
group.photoUrl = "http://www.youtube.com/sd.jpg";
group.photoKey = "cook101chef";
// subscribe group
describe("/subscribe/:group_id/:account_id route test", () => {
it("Should return a status of 201 with json data", async () => {
await group.save();
await request(app)
.post("/v1/subscribe/1/1")
.expect(201)
.then((res) => {
expect(res.body.groupAccount.account_id).toBe(1);
});
});
it("Should return a status of 400", async () => {
await request(app).post("/v1/subscribe/1x/1x").expect(400);
});
});
// 错误:
FAIL tests/group.test.ts (9.678 s)
✕ Should return a status of 400 (15 ms)
/subscribe/:group_id/:account_id route test
✓ Should return a status of 201 with json data (241 ms)
● Should return a status of 400
QueryFailedError: SQLITE_MISUSE: Database handle is closed
at new QueryFailedError (src/error/QueryFailedError.ts:9:9)
at handler (src/driver/sqlite/SqliteQueryRunner.ts:79:26)
at replacement (node_modules/sqlite3/lib/trace.js:25:27)
at Database.errBack (node_modules/sqlite3/lib/sqlite3.js:14:21)
● Should return a status of 400
CannotExecuteNotConnectedError: Cannot execute operation on "default" connection because connection is not yet established.
at new CannotExecuteNotConnectedError (src/error/CannotExecuteNotConnectedError.ts:8:9)
at Connection.<anonymous> (src/connection/Connection.ts:226:19)
at step (node_modules/tslib/tslib.js:141:27)
at Object.next (node_modules/tslib/tslib.js:122:57)
at node_modules/tslib/tslib.js:115:75
at Object.__awaiter (node_modules/tslib/tslib.js:111:16)
at Connection.Object.<anonymous>.Connection.close (node_modules/typeorm/connection/Connection.js:169:24)
at Object.<anonymous> (tests/group.test.ts:19:14)
ReferenceError:您正在尝试import
在 Jest 环境被拆除后创建文件。
at src/util/DirectoryExportedClassesLoader.ts:41:22
at Array.map (<anonymous>)
at Object.importClassesFromDirectories (src/util/DirectoryExportedClassesLoader.ts:41:10)
at ConnectionMetadataBuilder.Object.<anonymous>.ConnectionMetadataBuilder.buildEntityMetadatas (src/connection/ConnectionMetadataBuilder.ts:59:56)
at Connection.Object.<anonymous>.Connection.buildMetadatas (src/connection/Connection.ts:517:59)
解决方案
推荐阅读
- javascript - 如何获得相对于背景img的鼠标位置
- javascript - 如何使用渲染之间的挂钩从其父组件调用渲染道具提供的回调
- swift - 任务因超时而失败时如何显示消息
- apache-spark - 使用 simba 驱动程序将数据帧发送到 Bigquery
- c++ - 联合查找以查看形状是否在一侧或另一侧
- aem - 经典用户界面 | 无法在“体验片段容器”中添加或移动组件
- .net - 如何在我正在复制的文件中添加日期戳?
- c# - 如何在 .net core 2.1 中忽略 SSL 验证
- azure-devops - 在 Azure 管道中构建 NopCommerce 项目
- python - Freshdesk api调用返回有限数量的票