Was ist Chai?
Chai ist eine auf Behavior Driven Development (BDD)/ Test Driven Development (TDD) basierte Assertion Library für Node und Browser. Das Tool kann mit jedem Framework, das JavaScript nutzt, kombiniert werden, wie zum Beispiel mit dem Framework Mocha. Chai wird in zwei verschiedenen Interfaces angeboten, die sich für die unterschiedlichen Präferenzen der Entwickler eignen: BDD und TDD. Beliebter ist BDD, da es einen übersichtlichen und lesbaren Stil und Sprache ermöglicht, womit das Testen einfacher und verständlich ist, da es stark der englischen Sprache ähnelt, während der TDD-Stil eher als klassischer Program-Code wahrgenommen wird. Für weitere Informationen klicken Sie auf folgenden Link: https://www.chaijs.com/.
Architektur
Bei Chai wird zwischen drei Assertion Styles unterschieden:
- Assert Style: eine Anfangsfunktion “assert” bietet für jeden Objekt-Typ einen Vergleich mit einem „soll“-Wert. Wichtig zu beachten ist das Zusammenspiel mit dem Browser, da Assert Style häufig Probleme bei der Nutzung durch Internet Explorer aufweist. Dieser Stil gehört zu TDD.
- Expect Style: eine Anfangsfunktion “expect” erlaubt die Verkettung der Sprach-Assertions. Dieser Stil gehört zu BDD.
- Should Style: eine Zugriffsfunktion “should” ist der Anfangspunkt der Sprach-Assertions. Er funktioniert nicht in Internet Explorer. Dieser Stil gehört zu BDD.
Beispiele:
Assert Style | Expect Style | Should Style |
assert.equal(foo, ‚bar‘); | expect(foo).to.equal(‚bar‘); | foo.should.equal(‚bar‘); |
assert.lengthOf(car.extras, 3); | expect(car).to.have.property(‚extras‚).with.lengthOf(3); | car.should.have.property(‚extras‚).with.lengthOf(3); |
Chai ist open-source und auf der Entwicklungsplattform GitHub verfügbar. Somit können unterschiedliche Erfahrungen, Einblicke und Ideen zwischen Entwicklern geteilt werden und das Tool ständig verbessert werden. Die Funktionalität von Chai wird durch zahlreiche Plugins, die zu Chai‘s Architektur gehören oder von Entwicklern selbst eingebaut werden, kontinuierlich um neue Eigenschaften optimiert. Mithilfe der Test Suite kann Chai selbst auf Funktionsfähigkeit während der Entwicklung geprüft werden.
Chai vs. csUnit
Ein Tool, welches öfters mit Chai verglichen wird, ist csUnit. In der untenstehenden Tabelle bekommen Sie einen Überblick über die Ähnlichkeiten und Unterschiede zwischen den zwei Libraries:
Chai |
csUnit |
|
Allgemein |
Chai ist eine auf BDD/ TDD basierte Assertion Library für Node und Browser und das JavaScript Framework | csUnit ist ein Open-Source Testwerkzeug für das .NET Framework |
Programmiersprache |
JavaScript | .NET |
Kategorie |
Unit Testing | Unit Testing |
Lizenz |
MIT | Zlib |
Server Testing Behaviour |
Verhalten und Funktionalität des Backends können getestet werden | Testen von Backend-Eigenschaften der Anwendung möglich |
Testen des Codes bei den Kunden (z.B. auf Webbrowser) |
Front-End-Komponenten können getestet werden | Front-End-Komponenten können getestet werden |
Fixtures (festen Daten für einen einzelnen Test) |
Nicht verfügbar | Verfügbar |
Group Fixtures (feste Daten für eine Gruppe von Tests)
|
Nicht verfügbar | Verfügbar |
Generatoren (Eingabedaten für Tests) |
Verfügbar durch Plugin | Nicht verfügbar |
Mocks (isoliertes Testen von Codes) |
Möglich durch die Verwendung einer Drittanbieter-Library | Manuell |
Quelle: https://knapsackpro.com/testing_frameworks/difference_between/csunit/vs/chaijs
Welche Assertion-Library letztendlich gewählt wird, hängt von den Vorlieben der Entwickler ab. Wenn man mit Cypress arbeitet, eignet sich Chai besser, da Cypress auf Mocha aufbaut und Chai und Mocha am häufigsten in Kombination verwendet werden.
Verwandte Begriffe
- Mocha
- Cypress
- BDD
- TDD
- Open Source
- GitHub