是否存在一种可靠的方法来可靠地验证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项目,但这将导致额外的一层复杂性,较低的执行性能并引入外部依赖性,因此实际上将是一个集成测试。
有没有更好的解决方案?