Я пытаюсь запустить управляемый данными тест транспортира. Прежде всего, запустите запрос к таблице оракулов, чтобы получить набор данных. Затем переберите эти данные, вызвав другие спецификации. Соединение оракула обрывается без ошибки. Таким образом, я запускаю в режиме отладки, я получаю это необработанное исключение:
NoSuchSessionError: This driver instance does not have a valid session ID (did you call WebDriver.quit()?) and may no longer be used.
at session_.flow_.promise (C:\Users\me\repos\wbhtml5\designer-e2e\node_modules\selenium-webdriver\lib\webdriver.js:847:16)
at new Promise (<anonymous>)
at SimpleScheduler.promise (C:\Users\me\repos\wbhtml5\designer-e2e\node_modules\selenium-webdriver\lib\promise.js:2242:12)
at promise.finally (C:\Users\me\repos\wbhtml5\designer-e2e\node_modules\selenium-webdriver\lib\webdriver.js:846:34)
at promise.then.error (C:\Users\me\repos\wbhtml5\designer-e2e\node_modules\selenium-webdriver\lib\promise.js:1684:12)
Я не могу понять, почему я получаю ошибки Promise или ошибки сеанса. Я не использую браузер / веб-драйвер, но я просто хочу подключиться к oracle.
Вот моя тестовая спецификация, в которой работает транспортир, устанавливающий соединение:
test.js
import VerifyDesignSpec from '../../specs/verify-design.e2e-spec';
import dbms = require('../../database');
// Connect to oracle and get list of parts
dbms.getProductFolderPartsCallback(dbms.PFPartKind.Switcher, dbms.PFPartStatus.Production, runProductFolderCallback);
// Callback function to loop over list of parts
function runProductFolderCallback(err, result) {
const partsToTest = JSON.parse(result);
partsToTest.forEach(part => {
VerifyDesignSpec.ProductFolderDesignVerification(part, null);
});
}
Это database.js
import Common from './common';
import credentials = require('./credentials');
import oracledb = require('oracledb');
export function getProductFolderPartsCallback(partType: PFPartKind, partStatus: PFPartStatus, callback) {
const dbms = oracledb;
dbms.fetchAsString = [ oracledb.CLOB ];
const cred = credentials.getCredential(credentials.TestCredentialKind.SomeDB);
dbms.getConnection({
user: cred.Userid,
password: cred.Password,
connectString: cred.ConnectionString
},
function (connErr, conn) {
if (connErr) {
Common.error(`getProductFolderParts: connection error: ${connErr}.`, true);
return callback(connErr);
}
const sqlCmd = 'SELECT PART_JSON FROM WEBENCHDB.ODT_PRODUCT_FOLDER_PARTS';
conn.execute(sqlCmd, function (queryErr, result) {
if (queryErr) {
Common.error(`getProductFolderParts: query error: ${queryErr}`, true);
closeConnection(conn);
return callback(queryErr);
}
let resultJSON = '';
(result.rows as any[]).forEach(row => {
if (resultJSON.length === 0) {
resultJSON = `[ ${row[0]}`;
} else {
resultJSON = resultJSON + `, ${row}`;
}
});
resultJSON = resultJSON + ']';
closeConnection(conn);
return callback(null, resultJSON);
}
);
});
}
function closeConnection(conn) {
conn.close(function (err) {
if (err) {
Common.error(`getProductFolderParts: connection close error: ${err}`, true);
} else {
Common.info(`getProductFolderParts: connection closed`, true);
}
});
}