kendo-网格在规范测试中不创建行

kendo-grid doesn't create rows in spec test

我正在编写 angular 规范测试来测试使用 kendo 网格的组件。我的组件获取数据列表作为输入,kendo-grid 的数据源是一个 get 函数,它构建要在 kendo-grid 中使用的数据。在我的规范测试中,它不显示任何行,除非我为 kendo-grid.

定义静态数据源

这是 kendo-grid 元素的开始标记:

<kendo-grid
  #grid
  [data]=gridView
  scrollable="virtual"
  id="shipmentGrid"
  [sortable]="{allowUnsort: false, mode:'single'}"
  [sort]="sort"
  [resizable]=true
  style="width:100%;"
  (sortChange)="sortChange($event)"
  (pageChange)="pageChange($event)"
  [skip]="skip"
  [style]="gridHeightStyle"
  [rowHeight]="35"
  [pageSize]="pageSize"
>

这是我 component.ts 中的 get gridView 函数,returns kendo-grid 的数据:

@Input() public shipments: Shipment[] = [];

get gridView(): GridDataResult {
    return {
      data: this.shipments.slice(this.skip, this.skip + this.pageSize),
      total: this.shipments.length
    };
  }

当我设置我的 kendo-grid 数据时,就像我在规范测试上面所做的那样,不会创建任何行,而是显示 kendoGridNoRecordsTemplate 的行。

但是当我将 kendo-grid 数据源设置为某个常量值时它起作用了:

<kendo-grid
  #grid
  [data]=staticList
  scrollable="virtual"
  id="shipmentGrid"
  [sortable]="{allowUnsort: false, mode:'single'}"
  [sort]="sort"
  [resizable]=true
  style="width:100%;"
  (sortChange)="sortChange($event)"
  (pageChange)="pageChange($event)"
  [skip]="skip"
  [style]="gridHeightStyle"
  [rowHeight]="35"
  [pageSize]="pageSize"
>

staticList = {
   data: [{shipmentDate: new Date(), shipmentQuantity: 5}],
   total: 1
}

如何使用@input shipments 和 get gridView() 函数让我的规格测试正常工作?这几乎就像我在测试期间设置输入发货数组时,已经创建了空网格,并且它永远不会用我的新发货列表重新创建。我没有放置我的个人列,因为网格在现实生活中创建正确,只是在我测试组件时 kendo-grid 没有使用我在测试中创建的 shipments 数组创建它的行。

我的问题是我在每次测试中都设置了发货数据,但我已经在调用 fixture.detectChanges();在我的测试套件的 beforeEach() 部分中...移动 fixture.detectChanges();在设置我的数据后从 beforeEach() 设置调用并进入每个单独的测试解决了我的问题。