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

Jest测试中预期与接收数据不匹配报错该如何解决

Jest预期与接收数据不匹配的解决方案

问题排查&调整步骤

  • 首先确认generateSalamWelcome的返回值结构:你当前日志打印的是result[0].data,但断言直接对比的是整个result和strings.salamWelcomeEn,大概率是取值层级错误,调整断言为:
expect(result[0].data).toEqual(strings.salamWelcomeEn);
  • 检查mock返回值和业务逻辑的匹配性:你当前mock返回{enOnly: false, bnOnly: false},如果generateSalamWelcome的逻辑是:
    • enOnly为true时返回英文欢迎语
    • bnOnly为true时返回孟加拉语欢迎语
    • 两者都为false时返回双语拼接的欢迎语
      那你预期用英文单语的strings.salamWelcomeEn必然不匹配,需要调整mock返回值为{enOnly: true, bnOnly: false}
  • 补充边界校验避免空值报错:你当前加了if(result)才打印日志,但断言没有做空值保护,建议补充判断:
expect(result).toBeDefined();
expect(result[0]?.data).toEqual(strings.salamWelcomeEn);
  • 如果是字符串内容差异,可在断言前打印两者对比排查格式问题:
console.log('预期值:', strings.salamWelcomeEn);
console.log('实际值:', result[0].data);

调整后的完整代码示例

describe("generateSalamWelcome", () => {
  it("salam queries", async () => {
    const getRestaurantQueriesMultipleMock = jest
      .spyOn(templateUtils, "getRestaurantQueriesMultiple")
      .mockImplementation((): any => {
        // 调整mock返回符合英文场景的值
        return Promise.resolve({enOnly: true, bnOnly: false, });
      });
    const result = await generateSalamWelcome(value);
    expect(getRestaurantQueriesMultipleMock).toHaveBeenCalled();
    // 调整断言取值层级
    expect(result).toBeDefined();
    expect(result[0].data).toEqual(strings.salamWelcomeEn);
  });
});

内容的提问来源于stack exchange,提问作者Al Imran Hossain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 20:45:09