Angular 2单元测试:使ngFor渲染,子组件的模板发生变化?

时间:2016-10-21 13:55:10

标签: unit-testing angular

我的父组件模板中有这样的东西(正在测试父组件)。

<div *ngFor="let data of _dataRows; let i=index">
    <child-cmp [data]="data"></child-cmp>
</div>

<button (click)="sortDataRows()"></button>

当我单击测试中的按钮时,数据行将在父组件(正在测试的组件)中排序。但是模板上的子组件顺序没有改变。在没有ngFor的情况下,当在被测试的父组件上调用方法时,子组件会在我的代码中更新模板。

这是我父组件中的sortDataRows()方法(是的,一切都在应用程序中运行!):

private sortDataRows(sortValues: any): void {
    this._dataRows.sort(function(a: any, b: any): number{
        if (!a[sortValues.fieldName] || !b[sortValues.fieldName]) {
            //this will handle sorting of Null or undefined for any type
            return this.compareNullvalues(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
        }
        if (a[sortValues.fieldName] instanceof Date || Number.isInteger(a[sortValues.fieldName])) {
            return this.compareNumbersOrDates(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
        } else {
            return this.compareStringValues(a[sortValues.fieldName], b[sortValues.fieldName], sortValues.ascending);
        }
    });
}

1 个答案:

答案 0 :(得分:0)

目前这是Angular上的一个漏洞 - https://github.com/angular/angular/issues/12642