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
相关产品推荐
相关产品推荐

