Condition: Je dois écrire un test unitaire pour un attribut data-binding
de HTML element
.
Voici le 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>
Je dois écrire un test unitaire pour la valeur de l'attribut resizable
.
Ce que j'ai essayé jusqu'à présent:
it('kendo-grid element should contain resizable attribute with "true" value', () => {
const element = fixture.debugElement.nativeElement.querySelector('kendo-grid');
expect(element.resizable).toBeTruthy();
});
Il échoue lors de l'exécution du programme de test Karma.
Toute aide sera très appréciable.
Ces attributs étant convertis en ng-reflect- {NomAttribut} dans le navigateur, Jasmin doit donc rechercher cet attribut. Le test ci-dessous devrait fonctionner.
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');
});
Vous devez ajouter NO_ERRORS_SCHEMA
dans vos schémas TestBed
:
import { NO_ERRORS_SCHEMA } from '@angular/core';
...
describe('HelloComponent', () => {
...
TestBed.configureTestingModule({
schemas: [NO_ERRORS_SCHEMA],
declarations: [ ... ]
});
...
});
Cela permet d'ignorer tous les composants enfants lors du test d'un composant par l'unité. Donc, votre test unitaire n'échouera pas.
Vous pouvez consulter cet exemple dans la démo stackblitz .
J'ai fait quelque chose comme ça. Pouvez-vous essayer une fois.
const element = fixture.debugElement.query(By.css('kendo-grid'));
expect(element.nativeElement.resizable).toBeTruthy();