Tester un composant paramétrable
- Créer une classe
Personne
ng g class personne
- Compléter la classe
Personne
comme suit :
export class Personne {
constructor(public nom: string, public prenom: string) {}
}
- Créer un composant
ProfilComponent
ng g component profil
<label>{{personne?.nom}} - {{personne?.prenom}}</label>
<button id="aimer" (click)="donnerAvis(true)">J'aime</button>
<button id="detester" (click)="donnerAvis(false)">Je déteste</button>
import { Component, OnInit, Input, Output, EventEmitter } from "@angular/core";
import { Personne } from "../personne";
@Component({
selector: "app-profil",
templateUrl: "./profil.component.html",
styleUrls: ["./profil.component.css"]
})
export class ProfilComponent implements OnInit {
@Input() personne: Personne;
@Output() avis = new EventEmitter<boolean>();
constructor() {}
ngOnInit() {}
donnerAvis(avis: boolean) {
this.avis.emit(avis);
}
}
import { async, ComponentFixture, TestBed } from "@angular/core/testing";
import { ProfilComponent } from "./profil.component";
import { Personne } from "../personne";
import { By } from "@angular/platform-browser";
describe("ProfilComponent", () => {
let component: ProfilComponent;
let fixture: ComponentFixture<ProfilComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ProfilComponent]
}).compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(ProfilComponent);
component = fixture.componentInstance;
fixture.detectChanges();
});
it("should create", () => {
expect(component).toBeTruthy();
});
it("avec une personne ayant un nom et un prénom", () => {
const p = new Personne("Hugues", "Paul");
component.personne = p;
fixture.detectChanges();
const hostEl: HTMLElement = fixture.nativeElement;
const phrase = hostEl.querySelector("label");
expect(phrase.textContent).toEqual("Hugues - Paul");
});
it("un clic sur J'aime émet true", () => {
let avis = false;
component.avis.subscribe(av => (avis = av));
const hostDe = fixture.debugElement;
const btnDe = hostDe.query(By.css("button#aimer"));
btnDe.triggerEventHandler("click", null);
expect(avis).toEqual(true);
});
});
- Vérifier que tous les tests sont passants.