Lernen Sie Teststrategien für Angular- (und generell Web-) Applikationen mit einem Mix aus Theorie und Demos kennen: Von Unit Test über Integration Test mit Jest bis End-to-end Tests mit Selenium.
Demos: https://github.com/florianbader/openspaceplanner
1. AIT GmbH & Co. KG – Ihre Software effizienter entwickelt
2. AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
TESTING EINER ANGULAR APP
3. 3AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
TAKE AWAYS
Was gibt es für Teststrategien
für Angular Apps?
Was sind die Grundlagen für
das Testing einer Angular App?
Wie gehe ich mit
Abhängigkeiten um?
Was gibt es alles
zu beachten?
4. 4AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
WAS WIR HEUTE NICHT LERNEN
Wie konfiguriere ich Karma,
Jasmine, … ?
Was ist TDD, BDD, … ?
Wie teste ich RxJS, … ?
Wie teste ich untestbare
Szenarien?
5. MIT WEM HABEN SIE ES ZU TUN?
Florian Bader, Senior Consultant
@ AIT Gmbh & Co. KG
Florian.bader@aitgmbh.de
@FlorianBaderDE
5AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
6. TEST STRATEGIEN
6AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
E2E
Tests
Snapshot Tests
Integration Tests
Unit Tests
Testing Pyramide
Frontend
8. JEST
◼ Performance
◼ All-in-one solution (faking, code coverage, …)
◼ DOM abstraction (no browser required)
◼ Fast feedback (watch)
◼ Snapshot Testing
8AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
https://jestjs.io/
9. ANGULAR WITH JEST
Angular CLI
npm i -D jest @angular-builders/jest
Angular
npm i -D jest jest-preset-angular
9AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
https://bit.ly/2ynCRiY
10. TYPEMOQ
npm i -D typemoq
Alternativen:
ts-mockito, Jest/Jasmine Spies
10AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
https://github.com/florinn/typemoq
sessionServiceMock = typemoq.Mock.ofType<SessionService>();
sessionServiceMock.setup(s => s.get(typemoq.It.isValue(session.id)))
.returns(() => Promise.resolve(session));
11. EXAMPLE PROJECT
OPEN SPACE PLANNER
11AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
https://github.com/florianbader/openspaceplanner
12. AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
DEMO TIME
AIT GmbH & Co. KG – Ihre Software effizienter entwickelt. 12
13. E2E BEST PRACTICES
• Page Object Model verwenden
• Properties geben kein HTML Element zurück
• Methoden beschreiben die Domänen-Aktion, nicht die
Browser-Aktion
• Methoden die auf andere Seiten navigieren, geben das POM
der Seite zurück
• Parameter über Umgebungsvariable
• URL, Browser, …
• Angular E2E funktioniert auch ohne Protractor
13AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
15. LAST BUT NOT LEAST
DIRECTIVES
• Gleiches Prinzip wie bei Components
PIPES
• Klasse instanziieren, transform Methode aufrufen
SUB COMPONENTS
• Stub Components im TestBed deklarieren
15AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.