ng test で Template parse errors

自動作成されたテストをとりあえず実行すると下記のエラー。

Failed: Template parse errors: Can't bind to 'data' since it isn't a known property of 'ngl-picklist'. 

1. If 'ngl-picklist' is an Angular component and it has 'data' input, then verify that it is part of this module. 
2. If 'ngl-picklist' is a Web Component then add 'CUSTOM_ELEMENTS_SCHEMA' to the '@NgModule.schemas' of this component to suppress this message. 
3. To allow any property add 'NO_ERRORS_SCHEMA' to the '@NgModule.schemas' of this component. 

(" <li *ngFor="let items of itemsList; let i = index;"> <ngl-picklist [ERROR ->][data]="items" [(nglPick)]="picksList[i]" [(open)]="opens[i]" "): ng:///DynamicTestModule/ExpenseFilterComponent.html@3:6

TestBed.configureTestingModule で引数に schemas: [ NO_ERRORS_SCHEMA ] を指定すると回避できる。

TestBed.configureTestingModule({
  declarations: [ ExpenseFilterComponent ],
  schemas: [ NO_ERRORS_SCHEMA ]
})

https://angular.jp/guide/testing#no_errors_schema

ただ、使いすぎは良くないらしい。何をテストすべきかを意識して、その内容をカバーできる最小限のスタブを作るほうが良さそう。

NO_ERRORS_SCHEMAのアプローチは2つの方法を使うよりも簡単ですが、それを過度に使用しないでください。

また、NO_ERRORS_SCHEMAは、誤って省略した、 またはスペルの間違ったコンポーネントや属性についてもコンパイラに知らせないようにします。 コンパイラが瞬時に捉えていた隠されたバグを追跡する時間を無駄にすることがあります。

Angular 公式ドキュメント > テスト

コメントを残す