Администратор Firebase: admin.auth().delete(uid) не разрешается в AVA test.after()

У меня возник быстрый вопрос об использовании AVA для тестирования с Firebase. При использовании test.after.finally() с администратором Firebase для удаления учетных записей пользователей при очистке теста обещание не разрешается или выдает ошибку. Есть очень большая вероятность, что я делаю что-то не так, и мне бы хотелось, чтобы вы внесли свой вклад.

Мой код:

test.after.always(async () => {
    internals.ids.forEach(async (id) => {
        await admin.database().ref(`users/${id}`).remove();
        await admin.auth().deleteUser(id);
    });
});

Где internals.ids — это массив идентификаторов, которые необходимо очистить в конце выполнения всех тестов.

Это может быть связано или не связано с непоследовательным характером AVA, но я не уверен на 100%. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать. Спасибо!


person Jacob Reed    schedule 20.05.2018    source источник


Ответы (1)


Попробуйте это вместо этого:

for (const id of internals.ids) {
  await ...remove()
  await ...deleteUser(id)
}

Поскольку вы используете forEach(), хук after фактически не ожидает завершения каких-либо ваших удалений/удалений пользователей, и процесс, скорее всего, завершится до того, как они это сделают.

person Mark Wubben    schedule 22.05.2018
comment
Ok! Я сделаю это позже сегодня и посмотрю, что произойдет. Я поставлю напоминание вернуться и +1, если это сработает. Спасибо! - person Jacob Reed; 23.05.2018
comment
Это было исправление! Спасибо! - person Jacob Reed; 27.05.2018