2017-08-04 2 views
1

Je suis nouveau sur les tests unitaires angulaires.Test d'unité angulaire: Comment exécuter un test de base

Je veux mettre en place un premier test de fonctionnement si j'ai développé ceci:

import { async, ComponentFixture, TestBed } from '@angular/core/testing'; 
import { AppComponent } from './app.component'; 

describe('AppComponent',() => { 
    let component: AppComponent; 
    let fixture: ComponentFixture<AppComponent>; 

    beforeEach(async(() => { 
    TestBed.configureTestingModule({ 
     declarations: [ AppComponent ], 
    }).compileComponents(); 
    })); 

    beforeEach(() => { 
    fixture = TestBed.createComponent(AppComponent); 
    component = fixture.componentInstance; 
    fixture.detectChanges(); 
    }); 

    it('first test',() => { 
    expect('1').toBe('1'); 
    }); 
}); 

Comme vous voyez mon premier test consiste à affirmer que « 1 » est « 1 », je ne sais pas pourquoi je suis face à un problème de l'obtenir RÉUSSI, car il me jette une telle erreur:

Error: Template parse errors: Can't bind to 'min' since it isn't a known property of 'dx-progress-bar'. 
    1. If 'dx-progress-bar' is an Angular component and it has 'min' input, then verify that it is part of this module. 
    2. If 'dx-progress-bar' 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. (" 
     width="100%" 
     [class.complete]="progressBar.value == maxValue" 
     [ERROR ->][min]="0" 
     [max]="maxValue" 
     [statusFormat]="wordProgression" "): ng:///DynamicTestModule/[email protected]:4 

il est vrai que j'utilise des widgets DevExtreme dans mon composant application, mais je n'ai pas même essayé de le tester. Je commence juste par des cas de test évidents.

J'ai besoin de savoir comment le réparer?

Suggestions ??

Répondre

2

Vous devez inclure toutes les choses qui ont besoin de compiler votre composant dans votre TestBed.configureTestingModule:

// import { DevExtremeModule } from 'devextreme-angular'; 
import { DxProgressBarModule } from 'devextreme-angular/ui/progress-bar'; 


TestBed.configureTestingModule({ 
    imports: [ 
    DxProgressBarModule, 
    // or DevExtremeModule 
    ], 
    declarations: [ AppComponent ], 
}).compileComponents(); 
+0

Fondamentalement, ce yurzui onformément à dire était que vous devez recréer réellement un module dynamique pour tester votre composant. La raison en est que tout est lié à l'injection de dépendances avec le composant angulaire, et vous devez recréer un module avec 'TestBed.configureTestingModule()' pour fournir le minimum requis pour la compilation de votre composant. Si vous avez besoin de services/pipes, ou quelque chose comme ça, n'oubliez pas de "stub" vos classes pour les utiliser comme des mock. –

+0

@AlexBeugnet, merci beaucoup pour ces informations, donc je veux savoir comment puis-je stub/se moquer de mes services ?? – firasKoubaa

+0

Quelque chose comme '{provide: MyService, useClass: MyServiceMock}' – yurzui