Voraussetzung: Ich muss einen Komponententest für ein data-binding
-Attribut von HTML element
schreiben.
Hier ist der Code:
<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>
Ich muss einen Komponententest für den Attributwert resizable
schreiben.
Was ich bisher ausprobiert habe:
it('kendo-grid element should contain resizable attribute with "true" value', () => {
const element = fixture.debugElement.nativeElement.querySelector('kendo-grid');
expect(element.resizable).toBeTruthy();
});
Es schlägt fehl, während der Karma-Testläufer ausgeführt wird.
Jede Hilfe wird sehr wertvoll sein.
Diese Attribute werden im Browser in ng-reflect- {attributeName} konvertiert. Daher muss Jasmin nach diesem Attribut suchen. Der folgende Test sollte funktionieren.
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');
});
Sie müssen NO_ERRORS_SCHEMA
in Ihre TestBed
-Schemas einfügen:
import { NO_ERRORS_SCHEMA } from '@angular/core';
...
describe('HelloComponent', () => {
...
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [ ... ]
});
...
});
Dadurch können alle untergeordneten Komponenten beim Komponententest einer Komponente ignoriert werden. Ihr Gerätetest wird also nicht fehlschlagen.
Sie können dieses Beispiel in der stackblitz Demo überprüfen.
Ich habe so etwas gemacht. Kannst du es einmal versuchen?.
const element = fixture.debugElement.query(By.css('kendo-grid'));
expect(element.nativeElement.resizable).toBeTruthy();