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

Angular测试中无法更新Mock数据导致测试用例失败的问题求助

Angular测试中无法更新Mock数据导致测试用例失败的问题求助

我在写Angular组件测试的时候碰到个头疼的问题,想请教下大家怎么解决。

我一开始在测试里这样Mock了DataTeamService:

dataTeamService = jasmine.createSpyObj('DataTeamService',['setDataGroup'],{ 
  selectValGroup: of({ id : 1, accessData : false }) 
});

第一个测试用例是验证当accessData为false时,组件的tabs只保留「Value Management」这一项,这个用例顺利跑通了:

it('should remove valData when accessData is false',()=>{ 
  fixture.detectChanges(); 
  expect(component.tabs).toEqual([{url: 'view', label : 'Value Management'}]) 
});

可到了第二个测试用例,我想验证当accessData为true时,tabs要多出「Value Contact」这一项,但不管怎么试都失败——因为accessData的值一直是false,根本没改成true:

it('should add valData when accessData is true',()=>{ 
  fixture.detectChanges(); 
  expect(component.tabs).toEqual([{url: 'view', label : 'Value Management'}, {url: 'valData', label : 'Value Contact'}]) 
});

我已经试过两种方法,但都没成功:

  • 把整个Mock代码复制到第二个测试用例里,没用
  • 尝试在第二个测试里重新定义Mock,但selectValGroup提示是只读属性,没法修改它的返回值

有没有大佬能告诉我,怎么在不同的测试用例里给这个Mock服务设置不同的selectValGroup返回值呀?

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.08 14:25:31