【问题标题】:Angular 2 unit testing: Make ngFor rendered, child components' templates change?Angular 2 单元测试:渲染 ngFor,子组件的模板会改变吗?
【发布时间】:2016-11-02 00:44:13
【问题描述】:

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

<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);
        }
    });
}

【问题讨论】:

  • 你能发布你的组件代码和测试代码吗
  • 刚刚做了,谢谢!

标签: unit-testing angular


【解决方案1】:

这是目前 Angular 上的一个开放错误 - https://github.com/angular/angular/issues/12642

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 2016-11-23
    • 2017-10-10
    • 2021-01-05
    • 1970-01-01
    • 2016-09-24
    相关资源
    最近更新 更多