Проверять результаты записи Firestore в модульных тестах Firebase Cloud Functions - PullRequest
0 голосов
/ 01 марта 2019

Есть ли хороший способ достоверно проверить результаты записи Firestore в облачной функции?Официальная документация рекомендует издеваться над каждым вызовом Firestore, но есть несколько предостережений.Наиболее важным является то, что есть несколько способов достижения аналогичных результатов.Например, эти 3 вызова приводят к одному и тому же результату:

await admin.firestore().collection('payments').add(myPayment);

await admin.firestore().collection('payments').doc().set(myPayment);

const batch = admin.firestore().batch();
batch.create(admin.firestore().collection('payments').doc(), myPayment);
await batch.commit();

Я могу вспомнить, по крайней мере, еще пару, которые дали бы точно такой же результат.Поэтому очень трудно смоделировать все вызовы, и даже если я сделаю это, тест станет слишком зависимым от реализации.Например, если код не использует пакетные записи и разработчик реорганизует код для их использования, тест необходимо будет переписать, даже если окончательный результат не изменится.Или даже если они заменяют add на набор doc ()., Как в первых двух примерах.И создание тестов, которые рассматривают все возможные реализации, будет сложным, хрупким и очень многословным.

Один из вариантов - использовать эмулятор или даже тестовый проект Firebase, но это вызовет дополнительный уровень сложности, нижепроизводительность выполнения и ввести внешние зависимости, так что это будет на самом деле интеграционный тест.

Есть ли лучшее решение, которого я не вижу?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...