Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript mocha chai测试用例不会自动终止_Javascript_Node.js_Mocha.js - Fatal编程技术网

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();
});