Jasmine (JavaScript-Testframework)

Jasmine soll einfach zu lesen sein. Ein einfacher Hallo-Welt-Test sieht wie der folgende Code aus, wobei describe() eine Testsuite beschreibt und it() eine einzelne Testspezifikation ist. Der Name „it()“ folgt der Idee der verhaltensgesteuerten Entwicklung und dient als erstes Wort im Testnamen, der ein vollständiger Satz sein sollte. Die Verwendung folgt einer Syntax, die der von RSpec ähnelt.

Der folgende Code testet diese Funktion

function helloWorld() { return 'Hello world!';}

und prüft, ob ihre Ausgabe tatsächlich der Text „Hello world!“ ist.

describe('Hello world', function() { it('says hello', function() { expect(helloWorld()).toEqual('Hello world!'); });});

Jasmine bietet einen reichhaltigen Satz an eingebauten Matchern. Im obigen Beispiel prüft toEqual die Gleichheit zwischen dem von der Funktion helloWorld() zurückgegebenen Wert und der Zeichenkette „Hello world!“. Dies entspricht den Assertions, die in anderen Testing-Frameworks verwendet werden. Jasmine-Matcher geben einfach einen booleschen Wert zurück: true, wenn die Erwartung erfüllt ist (eine Möglichkeit, um anzuzeigen, dass der Test bestanden wurde) oder false, wenn die Erwartung nicht erfüllt ist. Eine gute Praxis ist es, eine einzelne Erwartung in eine individuelle it()-Testspezifikation aufzunehmen.

Andere eingebaute Matcher sind toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. Der Identitätsabgleicher toBe prüft, ob zwei Dinge dasselbe Objekt sind. Die Bedingungsabgleicher toBeTruthy, toBeFalsy prüfen, ob etwas wahr oder falsch ist, und toBeDefined, toBeUndefined prüfen, ob etwas definiert oder undefiniert ist. Wie der Name schon sagt, prüft toBeNull, ob etwas null ist, und toBeNaN, ob etwas keine Zahl (NaN) ist. Der Präzisionsabgleicher toBeCloseTo akzeptiert zwei Parameter und prüft, ob eine Zahl in der Nähe des ersten Parameters liegt, wobei der zweite Parameter eine bestimmte Dezimalgenauigkeit angibt. Der Matcher toContain wird verwendet, um zu überprüfen, ob ein Element, ein Objekt oder ein Teilstring in einem Array, einer Liste oder einem String enthalten ist.

Der spezielle eingebaute Matcher toThrow wird verwendet, um zu überprüfen, ob eine Ausnahme ausgelöst wurde. Der folgende Code überprüft, ob „Some exception“ ausgelöst wurde.

describe('Expect to throw an exception', function() { it('throws some exception', function() { expect( function(){ throw('Some exception'); }).toThrow('Some exception'); });});

Jasmine verfügt über eine Reihe weiterer Funktionen, wie z.B. benutzerdefinierte Matcher, Spies und Unterstützung für asynchrone Spezifikationen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.