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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 03:33:20