web-dev-qa-db-fra.com

Angular 5: Comment écrire un test unitaire Jasmine pour un attribut de liaison de données

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. 

 enter image description here

Toute aide sera très appréciable.

7
Rohit Jindal

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');
  });
3
Okan Aslankan

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 .

0
shohrukh

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();
0
KunalMZ