Jasmine (JavaScript testing framework)

Jasmine ma być łatwy do czytania. Prosty test hello world wygląda jak poniższy kod, gdzie describe() opisuje zestaw testów, a it() jest specyfikacją pojedynczego testu. Nazwa „it()” jest zgodna z ideą programowania sterowanego zachowaniem i służy jako pierwsze słowo w nazwie testu, która powinna być pełnym zdaniem. Sposób użycia jest podobny do składni RSpec.

Poniższy kod testuje tę funkcję

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

i sprawdza, czy jej wynikiem jest rzeczywiście tekst „Hello world!”.

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

Jasmine udostępnia bogaty zestaw wbudowanych matcherów. W powyższym przykładzie, toEqual sprawdza równość pomiędzy wartością zwróconą z funkcji helloWorld() a ciągiem „Hello world!”. Jest to to samo, co asercje używane w innych frameworkach testujących. Jasmine matchery po prostu zwracają wartość logiczną: true, jeśli oczekiwanie jest dopasowane (sposób na wskazanie, że test przeszedł) lub false, jeśli oczekiwanie nie jest dopasowane. Dobrą praktyką jest umieszczenie pojedynczego oczekiwania w indywidualnej specyfikacji testu it().

Inne wbudowane matchery obejmują toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. Matcher tożsamości toBe sprawdza czy dwie rzeczy są tym samym obiektem. Dopasowania warunkowe toBeTruthy, toBeFalsy oceniają czy coś jest prawdą czy fałszem, a toBeDefined, toBeUndefined sprawdzają czy coś jest zdefiniowane czy niezdefiniowane. Jak sama nazwa wskazuje toBeNull sprawdza czy coś jest null, a toBeNaN sprawdza czy coś nie jest liczbą (NaN). Precyzyjny matcher toBeCloseTo przyjmuje dwa parametry i sprawdza, czy liczba jest bliska pierwszemu parametrowi, biorąc pod uwagę pewną precyzję dziesiętną wskazaną przez drugi parametr. Matcher toContain jest używany do sprawdzenia, czy element, obiekt lub podłańcuch jest zawarty w tablicy, liście lub łańcuchu.

Specjalny wbudowany matcher toThrow jest używany do sprawdzenia, czy został rzucony wyjątek. Poniższy kod weryfikuje, czy „Jakiś wyjątek” został rzucony.

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

Jasmine posiada wiele innych funkcji, takich jak niestandardowe matchery, szpiedzy oraz wsparcie dla specyfikacji asynchronicznych.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *