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

如何在Jasmine中模拟柯里化函数?附示例方法代码

可以用Jasmine模拟这类方法

当然可以。这类方法的特点是接收参数后返回另一个函数,Jasmine的spyOn和自定义返回值能力完全能处理这种场景。

具体实现步骤

  1. 模拟方法并指定返回函数
    假设doSmth属于MyClass类的实例,你可以这样模拟它,让它返回自定义逻辑的函数:

    const myInstance = new MyClass();
    spyOn(myInstance, 'doSmth').and.returnValue((data: Data<T>) => {
      // 按需写返回逻辑,比如根据data的属性判断结果
      return data.isValid;
    });
    
  2. 验证调用与返回函数的执行
    既能验证doSmth本身的调用情况,也能检查返回函数的执行结果:

    // 获取doSmth返回的函数
    const returnedFn = myInstance.doSmth(someEventDescriptor);
    // 执行返回的函数
    const result = returnedFn(testData);
    // 验证doSmth被正确调用
    expect(myInstance.doSmth).toHaveBeenCalledWith(someEventDescriptor);
    // 验证返回函数的执行结果符合预期
    expect(result).toBe(true);
    
  3. 适配不同测试场景
    不同测试用例里可以让doSmth返回不同逻辑的函数,直接修改returnValue里的内容即可:

    // 模拟返回始终返回false的函数
    spyOn(myInstance, 'doSmth').and.returnValue(() => false);
    

补充说明

如果doSmth是全局函数而非类方法,直接用jasmine.createSpy创建模拟:

const mockDoSmth = jasmine.createSpy('mockDoSmth').and.returnValue((data: Data<T>) => true);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:04:58