javascript - 使用 Jest 进行 neo4j Node js 单元测试
问题描述
我使用 Jest 框架来创建单元测试。当我运行它们时。最后有消息:
“测试运行完成后一秒钟 Jest 没有退出。这通常意味着在您的测试中没有停止异步操作。考虑运行 Jest--detectOpenHandles
以解决此问题。”
要退出,我使用命令“--forceExit”。另外,我试图找到一个问题--detectOpenHandles
,但它没有显示任何内容。
我找不到它没有关闭的东西,会话或驱动程序,或其他东西。怎么可能修好?
const neo4j = require("neo4j-driver");
const driver = neo4j.v1.driver(
`bolt://${host}`,
neo4j.v1.auth.basic(username, password)
);
beforeAll(async () => {
await cleanDB();
});
afterAll(async () => {
await cleanDB();
driver.close();
});
async function cleanDB() {
await runQuery(`...query`);
}
async function runQuery(query) {
const session = driver.session();
return session
.writeTransaction(tx => tx.run(query))
.then(result => {
session.close();
return result;
})
.catch(error => {
session.close();
return { error };
});
}
describe(`bla-bla-bla`, function() {
beforeAll(async () => {
await dataBaseLoader(data);
});
test(`bla-bla-bla`, async function() {
const result = await runQuery(
'...query' );
//Body of Test
expect(result).toStrictEqual(expected);
});
解决方案
如果您不在正文中使用等待,则无需在函数之前使用异步,如果函数不是异步访问它而不等待
function cleanDB() {
runQuery(`...query`);
}
function runQuery(query) {
const session = driver.session();
return session
.writeTransaction(tx => tx.run(query))
.then(result => {
session.close();
return result;
})
.catch(error => {
session.close();
return { error };
});
}
等等,检查你所有的功能,也许它会有所帮助
推荐阅读
- java - Maven 构建未使用模型的更新版本(pom.xml)
- javascript - model.fit 和 tensorflow.js 的详细说明
- elasticsearch - Elasticsearch 在启动时失败
- angular - Angular:文件提交的反应性表单错误
- arrays - Angular Typescript过滤对象数组不起作用
- postgresql - 在 docker 中安装 postgresql 扩展的问题
- sql - 在 T-SQL 中的一行上返回多个 case 语句
- java - 如何在 Java 中从另一个类创建和构造一个类
- java - 将一个 json 对象附加到另一个 json 对象 java
- html - 如何对齐三个div?