Firebase и Typescript: установка ссылки на admin.database () приводит к зависанию тестов mocha - PullRequest
0 голосов
/ 04 октября 2019

Я использую 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?

...