SlideShare a Scribd company logo
1 of 19
Tester votre
application
Angular 2+
Un guide par FERDINAND
Introduction
Tout comme son prédécesseur Angular 1, Angular a été
conçu avec la testabilité comme objectif principal.
Quand nous parlons de tests dans Angular, nous parlons
généralement de deux types de tests différents:
Test Unitaire
Test Fonctionnel (E2E)
Test Unitaire
➔ C’est quoi Jasmine?
➔ Comment écrire des tests dans Jasmine?
➔ C’est quoi Karma?
➔ Comment créer et exécuter des tests en
utilisant l'interface CLI Angular?
Jasmine est un framework
de test javascript
permettant de créer des
tests sous format
lisible par les humains
Tip
Jasmine applique une
pratique de
développement de
logiciels appelé
Behaviour Driven
Development, ou BDD
tous court.
C’est quoi Jasmine?
Exemple de fonctions à tester
function Bonjour() {
return 'Bonjour tout le monde!';
}
Jasmine Test
describe('Test Fonction Bonjour', () =>{
it('Doit dire Bonjour', () => {
expect(Bonjour())
.toEqual('Bonjour tout le monde!');
});
});
Comment écrire des tests sous Jasmine? Tip
Lambda Expression
( x : number) => { x*10 }
Cela remplace
function (x : number ) { return x*10 }
describe(string, function) La fonction définit une suite de
tests, une collection de spécifications de test individuelles (it).
it(string, function) définit une spécification de test
individuelle, qui contient une ou plusieurs attentes de test(expect).
expect(actual) l'expression est ce que nous appelons une attente.
En conjonction avec un Matcher, il décrit un comportement attendu dans
l'application.
L'expression matcher (attendue) fait une comparaison booléenne
avec la valeur attendue transmise par rapport à la valeur réelle passée à la
fonction expect, si elles sont fausses, la spécification échoue.
Exemple de Matchers
Jasmine vient avec quelques Matchers
prédéfinie comme ça:
expect(array).toContain(member);
expect(fn).toThrow(string);
expect(fn).toThrowError(string);
expect(instance).toBe(instance);
expect(mixed).toBeDefined();
expect(mixed).toBeFalsy();
expect(mixed).toBeNull();
expect(mixed).toBeTruthy();
expect(mixed).toBeUndefined();
expect(mixed).toEqual(mixed);
expect(mixed).toMatch(pattern);
expect(number).toBeCloseTo(number,decimalPlaces;
expect(number).toBeGreaterThan(number);
expect(number).toBeLessThan(number);
expect(number).toBeNaN();
expect(spy).toHaveBeenCalled();
expect(spy).toHaveBeenCalledTimes(number);
expect(spy).toHaveBeenCalledWith(...arguments);
Karma
Exécuter manuellement des tests Jasmine en actualisant un onglet du
navigateur à plusieurs reprises dans différents navigateurs chaque fois que
nous modifions du code peut devenir fastidieux.
Karma est un outil qui nous permet d'exécuter des tests de jasmin à partir de la
ligne de commande.
Karma peut également regarder vos fichiers de développement pour les
changements et relancer les tests automatiquement.
C’est quoi Karma?
Angular CLI
Les fichiers de test doivent y avoir l’extension
.spec.ts dans le dossier src/app
Lors de la création d’un composant(exp.
Home) à l’aide du CLI il genere
automatiquement deux fichiers
home.component.ts
Home.component.spec.ts
La même chose pour les services et les pipes
home.pipe.ts
Home.pipe.spec.ts
home.service.ts
Home.service.spec.ts
Angular CLI
La CLI Angular télécharge et installe
tout ce dont vous avez besoin pour
tester une application Angular avec le
framework de test Jasmine.
Le projet que vous créez avec la CLI est
immédiatement prêt à être testé.
Il suffit d'exécuter cette commande
CLI:
> ng test
10% building modules 1/1 modules 0 active
...INFO [karma]: Karma v1.7.1 server started
at http://0.0.0.0:9876/
...INFO [launcher]: Launching browser
Chrome ...
...INFO [launcher]: Starting browser Chrome
...INFO [Chrome ...]: Connected on socket ...
Chrome ...: Executed 3 of 3 SUCCESS
(0.135 secs / 0.205 secs)
La résultat dans le console est la suivante :
Tester un Component
Describe
BeforeEach
Create Test Component
TestComponentBuilder
Debugging Fixture component
It
Expect
Créer un Component
app/first/first.component.ts
@Component({
selector: 'app-first’,
template: '<h1>{{titre}}</h1>',
})
export class FirstComponent {
titre = 'This is my first test';
}
Créer le test
app/first/first.component.spec.ts
// Donner un titre à la collection du test
describe('Test First Component', () => {
// Déclarer les différentes variables
let component: FirstComponent;
let fixture: ComponentFixture<FirstComponent>;
let h1: HTMLElement;
// Avant Chaque (it) on peut initialiser les variables déclarées
beforeEach(() => {
TestBed.configureTestingModule({
declarations: [FirstComponent],
});
fixture = TestBed.createComponent(FirstComponent);
component = fixture.componentInstance;
h1 = fixture.nativeElement.querySelector('h1');
});
// Une specification de test
it('should display original title', () => {
// Nous attendons que la valeur du h1 soit égale au var. titre
expect(h1.textContent).toContain(component.titre);
});
});
Tester un Service
TestBED
Inject
Créer un Service
app/first/first.service.ts
@Injectable()
export class FirstService {
constructor(private firstService: FirstService)
{ }
getValue() { return “Data”); }
}
Créer le test
app/first/first.service.spec.ts
import { TestBed, inject } from '@angular/core/testing';
describe(‘Testing get value()', () => {
beforeEach(() => {
TestBed.configureTestingModule({
providers: [FirstService]
});
});
it('should Be GET method & Return data>',
inject([FirstService], (firstService) => {
expect(firstService.getValue()).toEqual(‘data’);
}));
});
Tester un Service avec
http
MockBackend
Http
TestBED
Inject
Créer un Service
app/first/first.service.ts
@Injectable()
export class FirstService {
constructor(private firstService: FirstService) { }
getValue() {
return this.http.get(url, { headers: headers })
.toPromise()
.then(response => { return response.json() })
.catch(this.handleError);
}
}
Créer le test
app/first/first.service.spec.ts
import { TestBed, async, inject } from '@angular/core/testing';
import { HttpModule,Http,Response,ResponseOptions,XHRBackend, RequestMethod} from
'@angular/http';
import { MockBackend } from '@angular/http/testing'
describe(‘Testing get value()', () => {
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpModule],
providers: [FirstService, XHRBackend, RequestMethod]
});
});
it('should Be GET method & Return data>',
inject([FirstService, XHRBackend], (FirstService, mockBackend) => {
mockBackend.connections.subscribe((connection) => {
expect(connection.request.method).toBe(RequestMethod.Get);
connection.mockRespond(new Response(new ResponseOptions({
body: JSON.stringify(data)
})));
});
FirstService.getValue().then(
(data) => {expect(data).toBeDefined();}
}));
});
Test Fonctionnel (E2E)
Ceci est défini comme le test de la
fonctionnalité complète d'une application. En
pratique, avec les applications Web, cela
signifie interagir avec votre application car elle
fonctionne dans un navigateur, tout comme un
utilisateur interagissait avec elle dans la vie
réelle, c'est-à-dire via des clics sur une page.
Exemple : Protactor
Unit vs E2E
APIs
Minuscule
Boîte blanche
Isolé du monde
Test Unitaire
UIs
Large
Boîte noire
Faire les pièces s'emboîtent
Test E2E
Merci!
Développeur Full-stack avec une grande
passion.
"LIFE IS NOT PERFECT AND THE GREATEST
LESSONS OF ALL ARE LEARNED BY MAKING
MISTAKES AND IMPROVING"
-PAUL VII
Ussef Ben Amor
(Ferdinand)

More Related Content

What's hot

Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJsRadhoueneRouached
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Clément Dubois
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: AngularHabib Ayad
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorArthurMaroulier
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)Yacine Rezgui
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à AngularjsRossi Oddet
 
Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindPhilippe Didiergeorges
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJSAbdoulaye Dieng
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutesDavid Bo
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido SOAT
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSFrédéric DUPERIER
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads France
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontendyllieth
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0adrienhautot
 

What's hot (20)

Cours 3 les directives
Cours 3 les directivesCours 3 les directives
Cours 3 les directives
 
Introduction au Framework AngularJs
Introduction au Framework AngularJsIntroduction au Framework AngularJs
Introduction au Framework AngularJs
 
Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)Le futur de AngularJS (2.0)
Le futur de AngularJS (2.0)
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
Partie 2: Angular
Partie 2: AngularPartie 2: Angular
Partie 2: Angular
 
Symposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme MeteorSymposium n°7 : Plateforme Meteor
Symposium n°7 : Plateforme Meteor
 
AngularJS - Présentation (french)
AngularJS - Présentation (french)AngularJS - Présentation (french)
AngularJS - Présentation (french)
 
Introduction à Angularjs
Introduction à AngularjsIntroduction à Angularjs
Introduction à Angularjs
 
Angular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium VersusmindAngular2 / Typescript symposium Versusmind
Angular2 / Typescript symposium Versusmind
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
Introduction à AngularJS
Introduction à AngularJSIntroduction à AngularJS
Introduction à AngularJS
 
Introduction à Angular
Introduction à AngularIntroduction à Angular
Introduction à Angular
 
comprendre angularJS en 10 minutes
comprendre angularJS en 10 minutescomprendre angularJS en 10 minutes
comprendre angularJS en 10 minutes
 
Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido Angular JS - Paterne Gaye-Guingnido
Angular JS - Paterne Gaye-Guingnido
 
Débuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJSDébuter avec Rails::API & AngularJS
Débuter avec Rails::API & AngularJS
 
CocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - EpitezCocoaHeads Toulouse - Xcode et les tests - Epitez
CocoaHeads Toulouse - Xcode et les tests - Epitez
 
jQuery vs AngularJS
jQuery vs AngularJS jQuery vs AngularJS
jQuery vs AngularJS
 
Angular Avancé
Angular AvancéAngular Avancé
Angular Avancé
 
AngularJS et autres techno frontend
AngularJS et autres techno frontendAngularJS et autres techno frontend
AngularJS et autres techno frontend
 
Evolutions scub foundation 3.0 = 4.0
Evolutions scub foundation 3.0 =  4.0Evolutions scub foundation 3.0 =  4.0
Evolutions scub foundation 3.0 = 4.0
 

Similar to Test angular 2+

Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreArnaud Auroux
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaHeads France
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfBoubakerMedanas
 
Selenium WebDriver avec Java
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java Ahmed HARRAK
 
Workshop angular2
Workshop angular2 Workshop angular2
Workshop angular2 sihemhcine
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introductionMichel Bruchet
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basiczineblahib2
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !Paris Salesforce Developer Group
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?Fou Cha
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptxIdrissaDembl
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.jsJulien Giovaresco
 

Similar to Test angular 2+ (20)

Les tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet coreLes tests comportementaux avec aspnet core
Les tests comportementaux avec aspnet core
 
Cocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitairesCocoaheads Paris Nombembre Test unitaires
Cocoaheads Paris Nombembre Test unitaires
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Chapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdfChapitre 1-Composants et Modules.pdf
Chapitre 1-Composants et Modules.pdf
 
Selenium WebDriver avec Java
Selenium WebDriver avec Java Selenium WebDriver avec Java
Selenium WebDriver avec Java
 
Workshop angular2
Workshop angular2 Workshop angular2
Workshop angular2
 
Aspnetcore introduction
Aspnetcore introductionAspnetcore introduction
Aspnetcore introduction
 
react-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basicreact-slides.ppx (2) (1).pptx react presentation basic
react-slides.ppx (2) (1).pptx react presentation basic
 
Conformiq
ConformiqConformiq
Conformiq
 
J Unit
J UnitJ Unit
J Unit
 
Angular 11
Angular 11Angular 11
Angular 11
 
Apache ANT
Apache ANTApache ANT
Apache ANT
 
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
La Tooling API, est-ce pour moi ? Bien sûr, viens voir pourquoi !
 
Comment écrire du code testable ?
Comment écrire du code testable ?Comment écrire du code testable ?
Comment écrire du code testable ?
 
Technologies sur angular.pptx
Technologies sur angular.pptxTechnologies sur angular.pptx
Technologies sur angular.pptx
 
Développer sereinement avec Node.js
Développer sereinement avec Node.jsDévelopper sereinement avec Node.js
Développer sereinement avec Node.js
 
spring-boot-fr.pdf
spring-boot-fr.pdfspring-boot-fr.pdf
spring-boot-fr.pdf
 
react-fr.pdf
react-fr.pdfreact-fr.pdf
react-fr.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 
tp-spring.pdf
tp-spring.pdftp-spring.pdf
tp-spring.pdf
 

Test angular 2+

  • 2. Introduction Tout comme son prédécesseur Angular 1, Angular a été conçu avec la testabilité comme objectif principal. Quand nous parlons de tests dans Angular, nous parlons généralement de deux types de tests différents: Test Unitaire Test Fonctionnel (E2E)
  • 3. Test Unitaire ➔ C’est quoi Jasmine? ➔ Comment écrire des tests dans Jasmine? ➔ C’est quoi Karma? ➔ Comment créer et exécuter des tests en utilisant l'interface CLI Angular?
  • 4. Jasmine est un framework de test javascript permettant de créer des tests sous format lisible par les humains Tip Jasmine applique une pratique de développement de logiciels appelé Behaviour Driven Development, ou BDD tous court. C’est quoi Jasmine?
  • 5. Exemple de fonctions à tester function Bonjour() { return 'Bonjour tout le monde!'; } Jasmine Test describe('Test Fonction Bonjour', () =>{ it('Doit dire Bonjour', () => { expect(Bonjour()) .toEqual('Bonjour tout le monde!'); }); }); Comment écrire des tests sous Jasmine? Tip Lambda Expression ( x : number) => { x*10 } Cela remplace function (x : number ) { return x*10 } describe(string, function) La fonction définit une suite de tests, une collection de spécifications de test individuelles (it). it(string, function) définit une spécification de test individuelle, qui contient une ou plusieurs attentes de test(expect). expect(actual) l'expression est ce que nous appelons une attente. En conjonction avec un Matcher, il décrit un comportement attendu dans l'application. L'expression matcher (attendue) fait une comparaison booléenne avec la valeur attendue transmise par rapport à la valeur réelle passée à la fonction expect, si elles sont fausses, la spécification échoue.
  • 6. Exemple de Matchers Jasmine vient avec quelques Matchers prédéfinie comme ça: expect(array).toContain(member); expect(fn).toThrow(string); expect(fn).toThrowError(string); expect(instance).toBe(instance); expect(mixed).toBeDefined(); expect(mixed).toBeFalsy(); expect(mixed).toBeNull(); expect(mixed).toBeTruthy(); expect(mixed).toBeUndefined(); expect(mixed).toEqual(mixed); expect(mixed).toMatch(pattern); expect(number).toBeCloseTo(number,decimalPlaces; expect(number).toBeGreaterThan(number); expect(number).toBeLessThan(number); expect(number).toBeNaN(); expect(spy).toHaveBeenCalled(); expect(spy).toHaveBeenCalledTimes(number); expect(spy).toHaveBeenCalledWith(...arguments);
  • 7. Karma Exécuter manuellement des tests Jasmine en actualisant un onglet du navigateur à plusieurs reprises dans différents navigateurs chaque fois que nous modifions du code peut devenir fastidieux. Karma est un outil qui nous permet d'exécuter des tests de jasmin à partir de la ligne de commande. Karma peut également regarder vos fichiers de développement pour les changements et relancer les tests automatiquement. C’est quoi Karma?
  • 8. Angular CLI Les fichiers de test doivent y avoir l’extension .spec.ts dans le dossier src/app Lors de la création d’un composant(exp. Home) à l’aide du CLI il genere automatiquement deux fichiers home.component.ts Home.component.spec.ts La même chose pour les services et les pipes home.pipe.ts Home.pipe.spec.ts home.service.ts Home.service.spec.ts
  • 9. Angular CLI La CLI Angular télécharge et installe tout ce dont vous avez besoin pour tester une application Angular avec le framework de test Jasmine. Le projet que vous créez avec la CLI est immédiatement prêt à être testé. Il suffit d'exécuter cette commande CLI: > ng test 10% building modules 1/1 modules 0 active ...INFO [karma]: Karma v1.7.1 server started at http://0.0.0.0:9876/ ...INFO [launcher]: Launching browser Chrome ... ...INFO [launcher]: Starting browser Chrome ...INFO [Chrome ...]: Connected on socket ... Chrome ...: Executed 3 of 3 SUCCESS (0.135 secs / 0.205 secs) La résultat dans le console est la suivante :
  • 10.
  • 11. Tester un Component Describe BeforeEach Create Test Component TestComponentBuilder Debugging Fixture component It Expect
  • 12. Créer un Component app/first/first.component.ts @Component({ selector: 'app-first’, template: '<h1>{{titre}}</h1>', }) export class FirstComponent { titre = 'This is my first test'; } Créer le test app/first/first.component.spec.ts // Donner un titre à la collection du test describe('Test First Component', () => { // Déclarer les différentes variables let component: FirstComponent; let fixture: ComponentFixture<FirstComponent>; let h1: HTMLElement; // Avant Chaque (it) on peut initialiser les variables déclarées beforeEach(() => { TestBed.configureTestingModule({ declarations: [FirstComponent], }); fixture = TestBed.createComponent(FirstComponent); component = fixture.componentInstance; h1 = fixture.nativeElement.querySelector('h1'); }); // Une specification de test it('should display original title', () => { // Nous attendons que la valeur du h1 soit égale au var. titre expect(h1.textContent).toContain(component.titre); }); });
  • 14. Créer un Service app/first/first.service.ts @Injectable() export class FirstService { constructor(private firstService: FirstService) { } getValue() { return “Data”); } } Créer le test app/first/first.service.spec.ts import { TestBed, inject } from '@angular/core/testing'; describe(‘Testing get value()', () => { beforeEach(() => { TestBed.configureTestingModule({ providers: [FirstService] }); }); it('should Be GET method & Return data>', inject([FirstService], (firstService) => { expect(firstService.getValue()).toEqual(‘data’); })); });
  • 15. Tester un Service avec http MockBackend Http TestBED Inject
  • 16. Créer un Service app/first/first.service.ts @Injectable() export class FirstService { constructor(private firstService: FirstService) { } getValue() { return this.http.get(url, { headers: headers }) .toPromise() .then(response => { return response.json() }) .catch(this.handleError); } } Créer le test app/first/first.service.spec.ts import { TestBed, async, inject } from '@angular/core/testing'; import { HttpModule,Http,Response,ResponseOptions,XHRBackend, RequestMethod} from '@angular/http'; import { MockBackend } from '@angular/http/testing' describe(‘Testing get value()', () => { beforeEach(() => { TestBed.configureTestingModule({ imports: [HttpModule], providers: [FirstService, XHRBackend, RequestMethod] }); }); it('should Be GET method & Return data>', inject([FirstService, XHRBackend], (FirstService, mockBackend) => { mockBackend.connections.subscribe((connection) => { expect(connection.request.method).toBe(RequestMethod.Get); connection.mockRespond(new Response(new ResponseOptions({ body: JSON.stringify(data) }))); }); FirstService.getValue().then( (data) => {expect(data).toBeDefined();} })); });
  • 17. Test Fonctionnel (E2E) Ceci est défini comme le test de la fonctionnalité complète d'une application. En pratique, avec les applications Web, cela signifie interagir avec votre application car elle fonctionne dans un navigateur, tout comme un utilisateur interagissait avec elle dans la vie réelle, c'est-à-dire via des clics sur une page. Exemple : Protactor
  • 18. Unit vs E2E APIs Minuscule Boîte blanche Isolé du monde Test Unitaire UIs Large Boîte noire Faire les pièces s'emboîtent Test E2E
  • 19. Merci! Développeur Full-stack avec une grande passion. "LIFE IS NOT PERFECT AND THE GREATEST LESSONS OF ALL ARE LEARNED BY MAKING MISTAKES AND IMPROVING" -PAUL VII Ussef Ben Amor (Ferdinand)