PrimeNG Table懒加载onPageEvent方法的Jasmine测试用例请求
PrimeNG表格懒加载事件处理函数的Jasmine测试示例
我基于PrimeNG实现了带懒加载的表格,绑定了onLazyLoad事件到onPageEvent函数,现在需要编写Jasmine测试用例,覆盖函数中未命中的分支,提升代码覆盖率。
待覆盖的分支
从代码逻辑来看,未覆盖的分支为以下条件的false分支:
event.sortField不存在的场景event.sortOrder && event.sortField不成立的场景(如sortField存在但sortOrder缺失,或两者都缺失)event.globalFilter不存在的场景
Jasmine测试代码
import { ComponentFixture, TestBed } from '@angular/core/testing'; import { YourComponent } from './your.component'; // 替换为你的组件实际路径 import { LazyLoadEvent } from 'primeng/api'; describe('YourComponent', () => { let component: YourComponent; let fixture: ComponentFixture<YourComponent>; beforeEach(async () => { await TestBed.configureTestingModule({ declarations: [YourComponent] }) .compileComponents(); }); beforeEach(() => { fixture = TestBed.createComponent(YourComponent); component = fixture.componentInstance; fixture.detectChanges(); // 模拟loadData方法,避免触发实际数据请求 spyOn(component, 'loadData'); }); // 测试基础分页场景,覆盖多个false分支 it('处理基础分页请求时,应设置排序、搜索参数为null', () => { const event: LazyLoadEvent = { rows: 10, first: 0 // 不传入sortField、sortOrder、globalFilter }; component.onPageEvent(event); expect(component.options).toEqual({ pageSize: 10, pageNumber: 1, sortField: null, sortDirection: null, search: null }); expect(component.loadData).toHaveBeenCalled(); }); // 覆盖sortField不存在的分支 it('当sortField缺失时,应设置sortField为null', () => { const event: LazyLoadEvent = { rows: 10, first: 10, sortOrder: 1 // 不传入sortField }; component.onPageEvent(event); expect(component.options.sortField).toBeNull(); expect(component.options.sortDirection).toBeNull(); expect(component.loadData).toHaveBeenCalled(); }); // 覆盖sortOrder缺失的分支(sortField存在但sortOrder不存在) it('当sortField存在但sortOrder缺失时,应设置sortDirection为null', () => { const event: LazyLoadEvent = { rows: 10, first: 0, sortField: 'entryDate' // 不传入sortOrder }; component.onPageEvent(event); expect(component.options.sortField).toBe('entryDate'); expect(component.options.sortDirection).toBeNull(); expect(component.loadData).toHaveBeenCalled(); }); // 覆盖globalFilter不存在的分支 it('当globalFilter缺失时,应设置search为null', () => { const event: LazyLoadEvent = { rows: 10, first: 0, sortField: 'user', sortOrder: -1 }; component.onPageEvent(event); expect(component.options.search).toBeNull(); expect(component.loadData).toHaveBeenCalled(); }); // 测试所有条件满足的正向分支 it('处理带排序和搜索的分页请求时,应正确设置所有参数', () => { const event: LazyLoadEvent = { rows: 10, first: 20, sortField: 'action', sortOrder: 1, globalFilter: 'test' }; component.onPageEvent(event); expect(component.options).toEqual({ pageSize: 10, pageNumber: 3, sortField: 'action', sortDirection: '1', search: 'test' }); expect(component.loadData).toHaveBeenCalled(); }); });
内容的提问来源于stack exchange,提问作者fritz6
相关产品推荐
相关产品推荐

