У меня есть веб-служба узла, которая инициализирует пул соединений 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> Если я не могу определить часть подключения к БД, могу ли я издеваться над этими методами, у которых есть запросы, чтобы я мог избежать запуска частей БД?
Если я собираюсь высмеивать части БД, я не уверен, как будет работать импорт модуля, потому что всякий раз, когда я импортирую метод модуля из теста и запускаю его, он будет запускать запрос по умолчанию . Не знаю, как написать исчерпывающие тестовые примеры для своей базы кода.