Tester un composant lié à un service

  • Créer un composant CompteurComponent.

    ng g component compteur
    
  • Modifier le template :

<p>le compteur est à {{nb}}</p>

<button (click)="incrementer()">++</button>
  • Modifier le composant :
import { Component, OnInit } from "@angular/core";
import { CompteurService } from "../compteur.service";

@Component({
  selector: "app-compteur",
  templateUrl: "./compteur.component.html",
  styleUrls: ["./compteur.component.css"]
})
export class CompteurComponent implements OnInit {
  private nb = 0;

  constructor(private _compteurSrv: CompteurService) {}

  ngOnInit() {
    this.nb = this._compteurSrv.incrementer();
  }

  incrementer() {
    this.nb = this._compteurSrv.incrementer();
  }
}
  • Exemple de test vérifiant l'appel de la méthode this._compteurSrv.incrementer() :
import { async, ComponentFixture, TestBed } from "@angular/core/testing";

import { CompteurComponent } from "./compteur.component";
import { CompteurService } from "../compteur.service";

describe("CompteurComponent", () => {
  let component: CompteurComponent;
  let fixture: ComponentFixture<CompteurComponent>;

  // Création d'un service "bouchon"
  // Ceci est un test unitaire
  // Il ne doit tester que le composant
  let compteurServiceStub = {

    // ici la méthode incrémenter renvoie
    // systématiquement la valeur 14
    incrementer: () => 14
  };

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [CompteurComponent],
      providers: [{ provide: CompteurService, useValue: compteurServiceStub }]
    }).compileComponents();
  }));

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

  it("should create", () => {
    expect(component).toBeTruthy();
  });

  it("à l'initialisation le composant affiche l'incrément initial (ici 14)", () => {
    // récupération du template
    const compteurEl: HTMLElement = fixture.nativeElement;

    // recherche du premier élément <p></p>
    const phrase = compteurEl.querySelector("p");

    // vérification du texte
    // le nombre 14 fourni par le service bouchon est bien affiché dans la vue
    expect(phrase.textContent).toEqual("le compteur est à 14");
  });
});
  • Vérifier que tous les tests sont passants.

results matching ""

    No results matching ""