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

karma-jasmine中如何两次spy方法覆盖代码的if和else分支

解决方案

你只要新增针对else分支触发条件的测试用例即可。你的代码中else分支的触发逻辑为:data为假值(null/undefined等),或data是无任何属性的空对象。

你可以按需选择以下两种测试场景编写用例,若仅需覆盖else分支写任意一种即可,若要覆盖全边界场景建议两种都补充:

  • 场景1:模拟refreshPageObeservable返回空对象
    测试代码示例:
    it('should clear userDetails when refreshPageObeservable returns empty object', () => {
      spyOn(shared, 'refreshPageObeservable').and.returnValue(of({}));
      fixture.detectChanges();
      // 验证结果符合预期
      expect(component.userDetails.fullName).toBe('');
      expect(component.userDetails.lastLogin).toBe('');
    });
    
  • 场景2:模拟refreshPageObeservable返回null类假值
    测试代码示例:
    it('should clear userDetails when refreshPageObeservable returns null', () => {
      spyOn(shared, 'refreshPageObeservable').and.returnValue(of(null));
      fixture.detectChanges();
      expect(component.userDetails.fullName).toBe('');
      expect(component.userDetails.lastLogin).toBe('');
    });
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 19:45:03