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

Jest中无法成功Mock API调用问题排查求助

问题分析与修复方案

核心问题梳理

  • 语法错误导致传参异常:调用getOptions时,第一个URL参数的单引号未正确闭合,造成传入的URL格式错误,甚至可能触发意外的真实请求逻辑。
  • 未等待Promise完成:原代码未用await处理getOptions返回的Promise,直接访问fetchOptions.data时,Promise仍处于pending状态,无法获取有效结果。
  • 缺少目标函数导入:测试文件未导入被测试的getOptions函数,导致测试无法正确调用目标逻辑。

修正后的完整测试代码

import { getOptions } from './networkHelper'; // 新增目标函数导入
import axios from 'axios';

const mockData = [
    { label: 'SEABROOK, 3028, VIC' },
    { label: 'SEABIRD, 6042, WA' },
];

jest.mock('axios');

describe('test api', ()=> {
    it('should resolve api call', async () => {
        axios.get.mockResolvedValue({data: mockData});

        // 修正引号错误,添加await等待Promise完成
        const fetchOptions = await getOptions('http://localhost:8080/options', 'seab');
        expect(fetchOptions.data).toEqual(mockData);
    }); // 补充缺失的闭合括号
});

额外验证建议

可以添加对axios.get调用的断言,确保请求URL符合预期:

expect(axios.get).toHaveBeenCalledWith('http://localhost:8080/optionsvalue=seab');

(注:如果实际业务中URL需要拼接?,比如${url}?value=${userKeys},请根据需求调整拼接逻辑,避免生成不规范的URL)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 04:37:07