Chai

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 Styleeine 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 Styleeine Anfangsfunktion “expect” erlaubt die Verkettung der Sprach-AssertionsDieser Stil gehört zu BDD. 
  • Should Styleeine 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ügbarSomit 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