如何测试gRPC端点?Prisma记录测试结果不匹配求助
问题分析
测试结果不匹配核心有两点:
- 结构差异:预期是数组包裹单个对象,实际返回的是单个对象
- 格式差异:预期是非标准的无引号键值格式,实际是标准JSON格式(外层字符串导致引号转义)
解决方案
1. 调整测试预期匹配实际返回格式
如果gRPC端点设计就是返回单个对象,直接修改测试断言为实际返回的字符串:
Want: "message:"{\"id\":\"rJDWRx\",\"text\":\"kamil44\",\"published\":false}""
更规范的做法是解析JSON后断言对象结构(避免字符串匹配的脆弱性):
// 以Jest为例 const actualData = JSON.parse(response.message); expect(actualData).toEqual({ id: 'rJDWRx', text: 'kamil44', published: false });
2. 修改端点返回数组结构
如果业务逻辑要求返回数组,在创建记录后将结果包装为数组再序列化:
const newRecord = await prisma.yourModel.create({ data: requestData }); // 包装为数组后序列化 return { message: JSON.stringify([newRecord]) };
3. 统一序列化格式
如果预期的是gRPC原生文本格式而非JSON,需要调整响应的序列化方式,使用gRPC的文本序列化器,确保输出格式符合无引号键值的样式。
内容的提问来源于stack exchange,提问作者Shibbaz
相关产品推荐
相关产品推荐

