Jasmine (JavaScript -testramme) - Jasmine (JavaScript testing framework)
| Udvikler (er) | Pivotal Labs |
|---|---|
| Første udgivelse | 14. september 2010 |
| Stabil udgivelse | 3.7.1 / 19. marts 2021
|
| Depot | |
| Skrevet i | JavaScript |
| Operativ system | På tværs af platforme |
| Type | Enhedstest |
| Licens | MIT -licens |
| Internet side |
jasmine |
Jasmine er en open-source testramme til JavaScript . Det har til formål at køre på en hvilken som helst JavaScript-aktiveret platform, ikke at trænge ind i applikationen eller IDE'en og have letlæselig syntaks. Det er stærkt påvirket af andre enhedstestrammer, såsom ScrewUnit, JSSpec, JSpec og RSpec .
Historie
Udviklerne på Pivotal Labs for Jasmine har tidligere udviklet en lignende enhedstestramme kaldet JsUnit før aktiv udvikling af Jasmine.
Funktioner
- Understøtter asynkron test.
- Gør brug af 'spioner' til implementering af testdouble .
- Understøtter test af front-end kode gennem en front-end udvidelse af Jasmine kaldet Jasmine-jQuery.
Anvendelse
Jasmine sigter mod at være let at læse. En simpel hej verdenstest ligner nedenstående kode, hvor beskriv () beskriver en række tests, og den () er en individuel testspecifikation. Navnet "it ()" følger ideen om adfærdsdrevet udvikling og fungerer som det første ord i testnavnet, som skal være en komplet sætning. Anvendelse følger syntaks svarende til RSpec .
Koden herunder tester denne funktion
function helloWorld() {
return 'Hello world!';
}
og verificerer, at dens output faktisk er teksten "Hej verden!".
describe('Hello world', function() {
it('says hello', function() {
expect(helloWorld()).toEqual('Hello world!');
});
});
Jasmine giver et rigt sæt indbyggede matchere. I ovenstående eksempel kontrollerer toEqual ligheden mellem værdien returneret fra helloWorld () -funktionen og 'Hej verden!' snor. Dette er det samme som påstande, der bruges i andre testrammer. Jasmine -matchere returnerer ganske enkelt en boolsk værdi: sandt, hvis forventningen matches (en måde at angive, at testen er bestået) eller falsk, hvis forventningen ikke stemmer overens. En god praksis er at sætte en enkelt forventning i en individuel it () testspecifikation.
Andre indbyggede matchere omfatter toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. Identitetsmatcheren toBe kontrollerer, om to ting er det samme objekt. Tilstanden matcher toBeTruthy, toBeFalsy evaluerer, om noget er sandt eller falsk og toBeDefined, toBeUndefined kontrollere, om noget er defineret eller udefineret. Som navnet antyder, kontrollerer toBeNull, om noget er nul, og toBeNaN kontrollerer, om noget ikke er et tal ( NaN ). Precision matcher toBeCloseTo accepterer to parametre og kontrollerer, om et tal er tæt på den første parameter, givet en vis decimalpræcision som angivet af den anden parameter. Matcher toContain bruges til at kontrollere, at et element, objekt eller understreng er indeholdt i en matrix, liste eller streng.
Den specielle indbyggede matcher toThrow bruges til at kontrollere, at der er kastet en undtagelse. Koden herunder bekræfter, at "En eller anden undtagelse" er kastet.
describe('Expect to throw an exception', function() {
it('throws some exception', function() {
expect( function(){ throw('Some exception'); }).toThrow('Some exception');
});
});
Jasmine har en række andre funktioner, f.eks. Tilpassede matchere, spioner og understøttelse af asynkrone specifikationer.
Jasmin testløbere
Jasmine leveres med en indbygget testløber. Jasmine -tests kan køre browsertests ved at inkludere en simpel SpecRunner.html -fil eller ved at bruge den som en kommandolinjetestløber, der understøttes til forskellige sprog som Nodejs, Python, Ruby eller (old way) ved hjælp af Karma, et simpelt JavaScript -testløberværktøj .
Sammenligning mellem Jasmine og Mokka
Mokka er en anden populær Javascript -testramme. Sammenligningen mellem Jasmine og Mokka er angivet i nedenstående tabel.
| Jasmine | Mokka |
|---|---|
| Jasmine leveres med testdouble ved hjælp af spioner. | Mokka leveres ikke med et testdobbelt bibliotek og bruger generelt et eksternt bibliotek som Sinon. |
| Jasmine har et kommandolinjeværktøj til at køre tests. | Mocha har et kommandolinjeværktøj til at køre tests. |
| Jasmine har påstande indbygget i det. | Mokka har ikke et påstandsbibliotek og bruger Chai til påstande. |
Fordele
- Formålet med Jasmine er at være browser, ramme, platform og sproguafhængig.
- Udover adfærdsdrevet udvikling understøtter Jasmine også testdrevet udvikling .