You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

firebase-functions-test的makeDocumentSnapshot不新建文档是预期行为吗

关于firebase-functions-test中makeDocumentSnapshot行为的解答

这是预期行为,并非库的bug。

testEnv.firestore.makeDocumentSnapshot(data, path)的设计定位是仅在内存中构造符合DocumentSnapshot接口规范的模拟对象,不会向真实Firestore数据库发起任何写入请求,也不会自动创建对应路径的文档。

你遇到报错的原因非常明确:

  • 你直接把内存构造的快照传给wrap后的onCreate处理函数时,真实Firestore中/animals/giraffe路径下并没有实际存在的文档
  • 而你写的makeLowerCase函数里用的是update()方法,Firestore的update操作强制要求目标文档必须预先存在,所以触发了NOT_FOUND错误。

你提到的两种修复方案都符合设计逻辑:

  • 方案一改用set({bio}, {merge: true}):该操作不要求目标文档预先存在,不存在则新建、存在则合并字段,适配你当前的测试逻辑
  • 方案二先通过admin SDK写入文档:保证触发函数运行前,目标路径已有对应文档,满足update操作的前置要求。

如果你只想做纯离线的单元测试,不需要连接真实Firestore校验最终写入结果,也可以直接基于模拟快照的逻辑做断言,不需要调用admin SDK读取数据库。

内容的提问来源于stack exchange,提问作者fergus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 06:45:04