Сбой тестов Mocha / Chai из-за того, что модуль узла oracledb занимает слишком много времени - PullRequest
0 голосов
/ 05 мая 2020

У меня есть веб-служба узла, которая инициализирует пул соединений oracledb. Вот моя структура проекта

app.ts

import { ConnectionDB } from "./dBConnections/DBConnection";
async function initilizeApp(){
try{
    console.log("Initializing Application");

    await Promise.all([ ConnectionDB.initilize() ]);

DBConnection.ts

const oracledb = require('oracledb');

export class ConnectionDB{

private constructor(){}

static async initilize(){

    try{
        await oracledb.createPool({
            user: USERNAME,
            password: PASSWORD,
            connectString: CONNECTION_STRING,
            poolMin: 20,
            poolMax: 20,
            poolIncrement: 0
        });

И в моем коде в некоторых модулях я вызываю SQL запросы напрямую из таких методов

TestController.ts

export class TestControllers{

async getSomething(test: IGetSome){

    query = `SELECT * from table;`;

    let getS = await ConnectionDB.executeSimpleQuery(query, bind);

Теперь, когда я пытаюсь запустить тест, который примерно такой

testclass.ts

import {expect} from 'chai';
import {TestController} from '../src/controllers/TestController';

describe("Sample test ", () => {
it('Simple test', async () => {

  var x = await getSomething(req);

Я получаю эту ошибку

ERROR:ConnectionDB.executeSimpleQuery:Error: NJS-047: poolAlias "default" not found in the connection pool cache

, и иногда я вижу, что время ожидания вызова запроса истекает через 2000 мс или что-то в этом роде.

Итак, мой вопрос состоит из 2 частей.

1> Есть ли способ установить sh соединение с БД до запуска набора тестов? Я пробовал несколько случайных вещей, включая добавление сценария установки в mocha.opts, но ничего не помогло. 2> Если я не могу определить часть подключения к БД, могу ли я издеваться над этими методами, у которых есть запросы, чтобы я мог избежать запуска частей БД?

Если я собираюсь высмеивать части БД, я не уверен, как будет работать импорт модуля, потому что всякий раз, когда я импортирую метод модуля из теста и запускаю его, он будет запускать запрос по умолчанию . Не знаю, как написать исчерпывающие тестовые примеры для своей базы кода.

...