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() 设置调用并进入每个单独的测试解决了我的问题。
我正在编写 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() 设置调用并进入每个单独的测试解决了我的问题。