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
相关产品推荐
相关产品推荐

