在Firebase Cloud Functions单元测试中验证Firestore写入结果

时间:2019-03-01 11:34:50

标签: typescript firebase unit-testing google-cloud-firestore google-cloud-functions

是否存在一种可靠的方法来可靠地验证Cloud Function上的Firestore写入结果?官方documentation建议嘲笑每个Firestore调用,但有一些警告。最关键的是,有几种方法可以达到相似的结果。例如,这三个调用产生相同的结果:

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();

我可以想到至少还有两个会产生完全相同的结果。因此,很难模拟所有调用,即使我这样做,测试也变得过于依赖实现。例如,如果代码不使用批处理写入,而开发人员将代码重构为使用批处理,则即使最终结果没有变化,也需要重写测试。或者,即使它们用doc()。set替换了add,也像前两个示例一样。创建考虑所有可能实现的测试将是复杂,脆弱且非常冗长的。

一个选择是使用仿真器,甚至是测试Firebase项目,但这将导致额外的一层复杂性,较低的执行性能并引入外部依赖性,因此实际上将是一个集成测试。

有没有更好的解决方案?

0 个答案:

没有答案