Javascript mocha chai测试用例不会自动终止
我已经在Javascript mocha chai测试用例不会自动终止,javascript,node.js,mocha.js,Javascript,Node.js,Mocha.js,我已经在mochachai上编写了以下测试用例,它运行良好,显示所有结果都成功通过。但在成功通过所有6个测试用例后,它不会终止执行。我不知道我的测试用例没有自动终止的原因是什么,我需要单击CTRL+C来终止测试用例 我不知道测试成功通过但没有终止的原因是什么。我还在测试用例的末尾编写了done(),但它仍然不起作用 我使用PostgreSQL作为数据库,NodeJS作为后端服务器 test.js app.query.js Test.service.js 我不知道测试成功通过但没有终止的原因是什么
mochachai
上编写了以下测试用例,它运行良好,显示所有结果都成功通过。但在成功通过所有6个测试用例后,它不会终止执行。我不知道我的测试用例没有自动终止的原因是什么,我需要单击CTRL+C来终止测试用例
我不知道测试成功通过但没有终止的原因是什么。我还在测试用例的末尾编写了done(),但它仍然不起作用
我使用PostgreSQL作为数据库,NodeJS作为后端服务器
test.js
app.query.js
Test.service.js
我不知道测试成功通过但没有终止的原因是什么
当所有测试都已运行时,您不会关闭数据库句柄,这意味着Node.js不知道您已经完成了
您可以在挂钩之后添加根级别,以将其关闭:
after(() => {
sequelize.close();
});
我不知道测试成功通过但没有终止的原因是什么
当所有测试都已运行时,您不会关闭数据库句柄,这意味着Node.js不知道您已经完成了
您可以在
挂钩之后添加根级别,以将其关闭:
after(() => {
sequelize.close();
});
只是这个测试套件吗?我在终端方面遇到了一些问题,例如mintty没有从测试运行程序获取退出代码。您是否使用--exit选项运行mocha?我过去在使用类似的选项时遇到了一些问题,并在测试套件中避免了使用箭头函数。在文档的某个地方,我读到mocha和arrow函数(当使用异步函数时)不能很好地发挥作用。你应该试试。只是这个测试套件吗?我在终端方面遇到了一些问题,例如mintty没有从测试运行程序获取退出代码。您是否使用--exit选项运行mocha?我过去在使用类似的选项时遇到了一些问题,并在测试套件中避免了使用箭头函数。在文档的某个地方,我读到mocha和arrow函数(当使用异步函数时)不能很好地发挥作用。你应该试试。谢谢你罗伯特凯尔普,它起作用了。但我仍然不明白,连接没有关闭只是因为它没有终止。因为在任何其他测试用例中,我都没有关闭连接。唯一的区别是,在这个测试用例中,我手动查询。我们有微服务架构,在所有的测试用例中,它调用api来获取数据,所以我没有遇到任何问题。当我添加此查询代码以从数据库获取数据进行比较时,它会导致测试用例终止的问题。测试用例的所有代码和逻辑工作正常,但问题是测试终止没有正确终止。您给了我一个答案,它对我也起作用,但这只是测试用例在通过后不会自动终止的原因。因为我们在package.json中创建了“pre-push”,它首先通过测试用例,然后只允许在github上推送代码。因此,您是否认为这只是终端挂断的原因,如果有任何可能的原因,那么请您指导我。与大多数编程语言一样:您应该在完成时清理所有资源(数据库连接、计时器、打开的文件)。摩卡咖啡不会帮你的。由于数据库连接仍然处于打开状态,Node.js假定“某些事情”仍然可能发生,并且不会退出该过程。当所有测试用例都运行时,Mocha也不会强制退出流程(因为它再次假设,由于开放数据库句柄,您还没有完成)。谢谢。sm0l提示,影响大。:>谢谢你,罗伯特凯尔普,它起作用了。但我仍然不明白,连接没有关闭只是因为它没有终止。因为在任何其他测试用例中,我都没有关闭连接。唯一的区别是,在这个测试用例中,我手动查询。我们有微服务架构,在所有的测试用例中,它调用api来获取数据,所以我没有遇到任何问题。当我添加此查询代码以从数据库获取数据进行比较时,它会导致测试用例终止的问题。测试用例的所有代码和逻辑工作正常,但问题是测试终止没有正确终止。您给了我一个答案,它对我也起作用,但这只是测试用例在通过后不会自动终止的原因。因为我们在package.json中创建了“pre-push”,它首先通过测试用例,然后只允许在github上推送代码。因此,您是否认为这只是终端挂断的原因,如果有任何可能的原因,那么请您指导我。与大多数编程语言一样:您应该在完成时清理所有资源(数据库连接、计时器、打开的文件)。摩卡咖啡不会帮你的。由于数据库连接仍然处于打开状态,Node.js假定“某些事情”仍然可能发生,并且不会退出该过程。当所有测试用例都运行时,Mocha也不会强制退出流程(因为它再次假设,由于开放数据库句柄,您还没有完成)。谢谢。sm0l提示,影响大。:>
/**
* @class TestService
*/
const Sequelize = require('sequelize');
const db = require('../db/models');
module.exports = class TestService {
/**
* @static execute query
* @param {*} query
* @param {*} replacements
* @param {*} operation
* @memberof TestService
*/
static executeQuery(query, replacements, operation) {
return new Promise((resolve, reject) => {
let queryType;
if (operation === 'insert') {
queryType = Sequelize.QueryTypes.INSERT;
} else if (operation === 'update') {
queryType = Sequelize.QueryTypes.UPDATE;
} else if (operation === 'select') {
queryType = Sequelize.QueryTypes.SELECT;
} else if (operation === 'delete') {
queryType = Sequelize.QueryTypes.DELETE;
} else {
queryType = Sequelize.QueryTypes.SELECT;
}
return db.sequelize
.query(query, { replacements, type: queryType, raw: true })
.then(data => resolve(data))
.catch(err => reject(err));
});
}
};
after(() => {
sequelize.close();
});