簡體   English   中英

摩卡柴測試用例不會自動終止

[英]mocha chai test case does not terminate automatically

我在mocha-chai上編寫了以下測試用例,並且工作正常並顯示所有結果成功通過。 但是在成功通過所有6個測試用例后,它不會終止執行。 我不知道為什么我的測試用例沒有自動終止的原因,我需要單擊CTRL + C來終止測試用例。

我不知道測試成功通過的原因是什么,但沒有終止。 我也在測試用例結束時編寫了done(),但它仍然不起作用

我使用PostgreSQL作為數據庫,NodeJS作為后端服務器。

test.js

const { colors } = require('mocha/lib/reporters/base');

colors.pass = 32;
const { describe, it } = require('mocha');
const { expect } = require('chai');
const request = require('superagent');
const should = require('should');
const fs = require('fs');
const path = require('path');
const moment = require('moment-timezone');

const envPath = path.join(__dirname, '.env');
require('dotenv').config({ path: envPath });

const Sequelize = require('sequelize');
const db = require('../db/models');

// Test that server is running or not
describe('Unit tests for add user', () => {
    // Gateway api test case and it's works fine
});

// Read the test cases stored from database and stored in an array
describe('Test Cases', () => {
    // Read the test cases from database
});

// Test case to write test data in csv and upload the csv and insert user information in csv

describe('Process data user csv', () => {    

    it('create user csv to write data in csv', done => {
        // Create user csv from test data and it's passed and successfully completed it
    });

    it('Upload user csv and insert the user in the database with accurate data', done => {
        // Upload user csv and insert user information from csv and it's passed and successfully completed it
    });

    it('verify user information from user table', done => {
        // This method verifies the user data stored user table, which has inserted in test case.
        // Sequlieze query which fetch the user information 

        TestService.executeQuery(
            dbQuery.qGetUserDetails,
            {
            email: arrTestCases[0].expected_result.email,
            },
            'select'
        )
        .then(data => {
            should(data[0].email).equal(arrTestCases[0].expected_result.email);
            done();
        });        
    });
  });
});

app.query.js

/**
 * @description default queries
 */
module.exports = {
  qGetUserDetails: `select * from "Users" where email = :email and is_active = true and is_deleted = false`,
};

Test.service.js

/**
 * @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));
    });
  }
};

我不知道測試成功通過的原因是什么,但沒有終止。

在運行所有測試時,您沒有關閉數據庫句柄,這意味着Node.js不知道您已完成。

您可以after掛鈎after添加根級別來關閉它:

after(() => {
  sequelize.close();
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM