Как мне справиться с очень медленными тестами в Firestore? - PullRequest
0 голосов
/ 09 июня 2019

Я установил юнит-тесты с Jest для CRUD-операций в Firestore, а также правил безопасности. Тесты зависят от локального запуска эмулятора Firestore.

Проблема в том, что чтение и запись из базы данных очень медленные. Время ожидания по умолчанию почти всегда превышено.

Jest оценивает 105 секунд, чтобы выполнить около 30 тестов.

Тесты работают, когда они на самом деле завершаются, но я уверен, что это не должно занять много времени.

Помимо прочего, я попытался увеличить время ожидания по умолчанию до 15 с, но этого недостаточно.

Пример теста:


beforeAll(async () => {

    jest.setTimeout(10000); 
    const app = initializeAdminApp({ projectId: "firestore-test" }); 
    //NOTE: "interfaces" is just a wrapper for CRUD on my documents
    const users = interfaces(app).users;
});

afterEach(async () => {

    await clearFirestoreData({
        projectId: `firestore-test`
    });
}); 

afterAll(async () => {

    await Promise.all(apps().map(app => app.delete()))
}); 

// NOTE: often (not always) takes a long time to complete.
it("is possible to delete", async () => {

    const id = await reviews.createOne(dummy.review()); 

    const before = reviews.read(id)
    await reviews.delete(id); 
    const after = reviews.read(id); 

    assertSucceeds(before); 
    assertFails(after); 
});

Я ожидаю, что операции с эмулятором пожарного депо должны занять меньше времени.

ОБНОВЛЕНИЕ : выясняется, что проблема в основном связана с clearFirestore, что делается после каждого теста. Это сократило время работы до 18 секунд. Однако в идеале я хотел бы очистить элементы после каждого теста, чтобы сделать тесты более независимыми.

Нужно ли clearFirestore так долго?

...