Я использую mocha, chai и chaiAsPromised для тестирования функций Firebase. У меня возникла проблема с зависанием моих тестов: они запускаются и успешно выполняются или, как и ожидалось, но не завершаются. То есть я должен фактически завершить процесс тестирования до (Ctrl-C или F5) после запуска тестов.
Для этого кода я использую Firebase Admin SDK и изолировал проблему от вызовадо admin.database
. Я установил следующий упрощенный тест, чтобы изолировать это поведение зависания:
import * as admin from 'firebase-admin';
import {} from 'mocha';
import * as chai from 'chai';
import * as chaiAsPromised from 'chai-as-promised';
let db: admin.database.Database;
before (() => {
chai.use(chaiAsPromised);
chai.should();
admin.initializeApp(testConfig);
db = admin.database();
});
describe('Data Access Tests', () => {
it ('tests DAO functionality', () => {
return true;
});
});
Когда я включаю строку admin.database()
, тестовый прогон зависает (т. Е. Процесс никогда не возвращается, и мне нужно убить его с помощью Ctrl-C.) Когда я закомментирую строку admin.database()
, , тестовый запуск завершается . Тест всегда «проходит» (как и ожидалось, поскольку он просто возвращает true
.)
Хотя мне не обязательно устанавливать ссылку на admin.database()
, как я (просто мне не нужно все время печатать), мне делать нужно передать admin.database()
моему DataAccessObject
, потому что именно там я инкапсулировал все вызовы базы данных firebaseи он хранит все эти URL-пути, содержащиеся в одном месте.
Может кто-нибудь объяснить, почему вызов admin.database()
может привести к зависанию процесса mocha?