单元测试未覆盖onSelect内GROUP类型判断if分支如何解决
问题根因
你的测试用例有两个核心问题,导致if分支无法命中:
- 传参错误:mock方法
event()返回的是包含3个事件对象的数组,但onSelect的入参要求是单个事件对象。现有测试调用component.onSelect(event())时直接传入了整个数组,此时方法内拿到的event是数组类型,event.type值为undefined,永远满足不了event.type === 'GROUP'的判断条件,自然走不进目标分支。 - 断言无效:现有写法里的
expect(ev.type).toEqual('GROUP')只是在验证你自己写的mock数据属性对不对,完全没有校验onSelect方法的执行逻辑和返回值,就算走到分支也没有做有效验证。
修正方案
调整测试用例,传入单个目标事件对象,同时针对分支逻辑的返回结果做断言,即可正确覆盖if分支:
it('should return null when select GROUP type event', () => { // 取出mock数据中type为GROUP的单个事件对象 const groupEvent = event()[1]; // 传入单个事件对象调用方法,不要传整个数组 const execResult = component.onSelect(groupEvent); // 验证分支逻辑执行结果:命中GROUP判断时返回null expect(execResult).toBeNull(); });
如果要完整覆盖该方法的所有逻辑,可以补充非GROUP类型的测试用例:
it('should not return null when event type is not GROUP', () => { // 测试无type字段的普通事件 const normalEvent = event()[0]; expect(component.onSelect(normalEvent)).not.toBeNull(); // 测试type为EMBED的事件 const embedEvent = event()[2]; expect(component.onSelect(embedEvent)).not.toBeNull(); });
内容的提问来源于stack exchange,提问作者André Castro
相关产品推荐
相关产品推荐

