AIT GmbH & Co. KG – Ihre Software effizienter entwickelt
AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
TESTING EINER ANGULAR APP
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?
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?
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.
TEST STRATEGIEN
6AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
E2E
Tests
Snapshot Tests
Integration Tests
Unit Tests
Testing Pyramide
Frontend
TESTING FRAMEWORKS
7AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
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/
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
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));
EXAMPLE PROJECT
OPEN SPACE PLANNER
11AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
https://github.com/florianbader/openspaceplanner
AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
DEMO TIME
AIT GmbH & Co. KG – Ihre Software effizienter entwickelt. 12
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.
DEBUGGING TESTS
node --inspect-brk ng test
14AIT GmbH & Co. KG – Ihre Software effizienter entwickelt.
{
"name": "Debug Tests",
"type": "node",
"request": "launch",
"runtimeArgs": [
"--inspect-brk"
],
"args": [
"test",
"--runInBand"
],
"program": "${workspaceFolder}/node_modules/@angular/cli/bin/ng",
"console": "integratedTerminal",
"internalConsoleOptions": "neverOpen",
"cwd": "${workspaceFolder}/Web",
"port": 9229
}
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.
AIT GmbH & Co. KG
Leitzstr. 45, 70469 Stuttgart
www.aitgmbh.de
KONTAKT
info@aitgmbh.de
+49 711 49066430
BERATUNG
Agile ALM und TFS
.NET und Architektur
ENTWICKLUNG
Dienstleister für individuelle
Lösungen mit .NET und Azure
© AIT GmbH & Co. KG – Alle genannten und gezeigten Marken oder Warenzeichen sind eingetragene Marken oder eingetragene Warenzeichen ihrer jeweiligen Eigentümer
und ggf. nicht gesondert gekennzeichnet. Aus dem Fehlen der Kennzeichnung kann nicht geschlossen werden, dass es sich bei einem Begriff oder einem Bild nicht um eine
eingetragene Marke oder ein eingetragenes Warenzeichen handelt.
AIT GmbH & Co. KG – Ihre Software effizienter entwickelt
WIR UNTERSTÜTZEN SIE
16

Testing einer Angular App

  • 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 HABENSIE 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
  • 7.
    TESTING FRAMEWORKS 7AIT GmbH& Co. KG – Ihre Software effizienter entwickelt.
  • 8.
    JEST ◼ Performance ◼ All-in-onesolution (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 AngularCLI 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 -Dtypemoq 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 SPACEPLANNER 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.
  • 14.
    DEBUGGING TESTS node --inspect-brkng test 14AIT GmbH & Co. KG – Ihre Software effizienter entwickelt. { "name": "Debug Tests", "type": "node", "request": "launch", "runtimeArgs": [ "--inspect-brk" ], "args": [ "test", "--runInBand" ], "program": "${workspaceFolder}/node_modules/@angular/cli/bin/ng", "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "cwd": "${workspaceFolder}/Web", "port": 9229 }
  • 15.
    LAST BUT NOTLEAST 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.
  • 16.
    AIT GmbH &Co. KG Leitzstr. 45, 70469 Stuttgart www.aitgmbh.de KONTAKT info@aitgmbh.de +49 711 49066430 BERATUNG Agile ALM und TFS .NET und Architektur ENTWICKLUNG Dienstleister für individuelle Lösungen mit .NET und Azure © AIT GmbH & Co. KG – Alle genannten und gezeigten Marken oder Warenzeichen sind eingetragene Marken oder eingetragene Warenzeichen ihrer jeweiligen Eigentümer und ggf. nicht gesondert gekennzeichnet. Aus dem Fehlen der Kennzeichnung kann nicht geschlossen werden, dass es sich bei einem Begriff oder einem Bild nicht um eine eingetragene Marke oder ein eingetragenes Warenzeichen handelt. AIT GmbH & Co. KG – Ihre Software effizienter entwickelt WIR UNTERSTÜTZEN SIE 16