Matchstick测试中save()失效 如何查看Postgres存储内容排查问题
Matchstick测试save()失效排查:查看后端存储状态的实操方法
以下方法不需要额外安装依赖,直接在测试代码里调用即可:
- 导出全量存储快照
任意测试节点直接调用内置的store.dump()方法,会返回当前测试上下文内存储的所有实体、索引、关联关系的结构化对象,直接打印就能确认save的内容有没有真的落库:
如果快照里找不到你保存的实体,先检查所有// 初始化阶段save操作完成后插入这行 console.log("[存储快照]", JSON.stringify(store.dump(), null, 2))save()调用有没有加await——Matchstick的存储写入是异步逻辑,没等Promise完成就进入后续读取流程是最高发的存数丢失原因。 - 开启全链路存储操作日志
在测试入口配置里把日志等级调成debug,运行测试时会打印每一次存储写入、查询、删除的完整入参和返回值,能直接定位是写入环节丢数据,还是读取环节查询条件不匹配:// 测试文件最顶部的runTest配置里加参数 runTest({ logLevel: "debug", // 其余原有测试配置 }) - 跨阶段读不到数据的高频坑排查
- 确认初始化存数和后续读数字用的实体Schema完全一致,字段名、字段类型、ID格式不能有偏差。Matchstick遇到Schema不匹配的实体会做静默过滤,不会抛出显性错误,这种情况你在dump快照里能看到存进去的实体,但正常读取接口会返回空。
- 不要手动实例化自定义的Store对象,Matchstick测试上下文的存储是全局单例,手动new出来的Store实例和应用代码调用的存储实例不互通,写入的数据自然读不到。
排查小技巧:如果快照里能看到目标实体,但读取接口返回空,直接把读取时的查询条件打印出来,和快照里的实体字段逐一对齐,绝大多数情况是查询条件传错、关联字段没有存为合法的实体ID字符串导致的匹配失败。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

