Jasmine pretende ser de fácil leitura. Um simples teste mundial de olá se parece com o código abaixo, onde descreve() descreve um conjunto de testes e ele() é uma especificação de teste individual. O nome “it()” segue a idéia de desenvolvimento orientado ao comportamento e serve como primeira palavra no nome do teste, que deve ser uma frase completa. O uso segue uma sintaxe similar à do RSpec.
O código abaixo testa esta função
function helloWorld() { return 'Hello world!';}
e verifica que sua saída é de fato o texto “Hello world!”.
describe('Hello world', function() { it('says hello', function() { expect(helloWorld()).toEqual('Hello world!'); });});
Jasmine fornece um rico conjunto de combinadores embutidos. No exemplo acima, toEqual verifica a igualdade entre o valor retornado da função helloWorld() e a string ‘Hello world! Isto é o mesmo que as afirmações usadas em outros frameworks de teste. Os igualadores Jasmine simplesmente retornam um valor booleano: verdadeiro se a expectativa for igualada (uma forma de indicar que o teste passou) ou falso se a expectativa não for igualada. Uma boa prática é colocar uma única expectativa em uma especificação do teste it() individual.
Outros resultados incorporados incluem ser, ser verdadeiro, ser falso, conter, ser indefinido, ser indefinido, ser nulo, ser nulo, ser maior do que, ser menos do que, ser fechado para. O identificador paraBeVerifica se duas coisas são o mesmo objeto. O verificador de condições paraBeTruthy, toBeFalsy avalia se algo é verdadeiro ou falso e paraBeDefined, toBeUndefined verifica se algo está definido ou indefinido. Como o nome sugere, paraBeNull verifica se algo é nulo e paraBeNaN verifica se algo não é um número (NaN). Precision matcher toBeCloseTo aceita dois parâmetros e verifica se um número está próximo do primeiro parâmetro, dada uma certa quantidade de precisão decimal como indicado pelo segundo parâmetro. Matcher toContain é usado para verificar se um elemento, objeto ou sub-corda está contido em um array, lista ou string.
O matcher especial embutido paraThrow é usado para verificar se uma exceção foi lançada. O código abaixo verifica que “Some exception” is thrown.
describe('Expect to throw an exception', function() { it('throws some exception', function() { expect( function(){ throw('Some exception'); }).toThrow('Some exception'); });});
Jasmine tem uma série de outras características, tais como matchers personalizados, espiões e suporte para especificações assíncronas.