要件:data-binding
のHTML element
属性の単体テストを作成する必要があります。
これがコードです:
<kendo-grid
[kendoGridBinding]="gridData"
[resizable]="true"
style="height: 300px">
<kendo-grid-column
field="UnitPrice"
title="Unit Price"
[width]="180"
filter="numeric"
format="{0:c}">
</kendo-grid-column>
</kendo-grid>
resizable
属性値の単体テストを作成する必要があります。
これまでに試したこと:
it('kendo-grid element should contain resizable attribute with "true" value', () => {
const element = fixture.debugElement.nativeElement.querySelector('kendo-grid');
expect(element.resizable).toBeTruthy();
});
Karmaテストランナーの実行中に失敗します。
どんな助けも高く評価されます。
これらの属性はブラウザーでng-reflect- {attributeName}に変換されるため、ジャスミンはその属性を探す必要があります。以下のテストはうまくいくはずです。
it('kendo-grid element should contain resizable attribute with "true" value', () => {
const element = fixture.debugElement.query(By.css('kendo-grid'));
expect(element.nativeElement.getAttribute('ng-reflect-resizable')).toBe('true');
});
今日の時点で、落とし穴があります。私はいくつかの議論を見つけました、そこで人々はこの属性について不平を言っています。 Pawel Kozlowski言った :
「深刻な」ものにはng-reflect -...を実際に使用すべきではないと思います。これらはデバッグモードのみであり、本番ビルドでは使用できません。
私が理解しているように、kendo-grid
はサードパーティのコンポーネントです。この場合、実際にテストする必要はありません。正しく実装されていることを確認するには、統合テストが必要です。したがって、kendo
コンポーネントをTestBed構成に含めて、NO_ERRORS_SCHEMA
を設定しないでください。
追加する必要がありますNO_ERRORS_SCHEMA
(TestBed
スキーマ内):
import { NO_ERRORS_SCHEMA } from '@angular/core';
...
describe('HelloComponent', () => {
...
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [ ... ]
});
...
});
これにより、コンポーネントのユニットテスト中にすべての子コンポーネントを無視できます。したがって、単体テストは失敗しません。
この例は stackblitzデモ で確認できます。
私はこのようなことをしてきました。一度やってみてください。
const element = fixture.debugElement.query(By.css('kendo-grid'));
expect(element.nativeElement.resizable).toBeTruthy();