Jasmine (estrutura de teste de JavaScript) - Jasmine (JavaScript testing framework)
| Desenvolvedor (s) | Pivotal Labs |
|---|---|
| lançamento inicial | 14 de setembro de 2010 |
| Versão estável | 3.7.1 / 19 de março de 2021
|
| Repositório | |
| Escrito em | JavaScript |
| Sistema operacional | Plataforma cruzada |
| Modelo | Teste de unidade |
| Licença | Licença MIT |
| Local na rede Internet |
jasmine |
Jasmine é uma estrutura de teste de código aberto para JavaScript . Ele tem como objetivo ser executado em qualquer plataforma habilitada para JavaScript, para não interferir no aplicativo nem no IDE e para ter uma sintaxe fácil de ler. É fortemente influenciado por outras estruturas de teste de unidade, como ScrewUnit, JSSpec, JSpec e RSpec .
História
Os desenvolvedores do Pivotal Labs for Jasmine desenvolveram anteriormente uma estrutura de teste de unidade semelhante chamada JsUnit antes do desenvolvimento ativo do Jasmine.
Recursos
- Suporta testes assíncronos.
- Faz uso de 'espiões' para a implementação de duplas de teste .
- Suporta teste de código de front-end por meio de uma extensão de front-end do Jasmine chamada Jasmine-jQuery.
Uso
Jasmine pretende ser fácil de ler. Um teste simples hello world se parece com o código abaixo, onde describe () descreve um conjunto de testes e () é uma especificação de teste individual. O nome "it ()" segue a ideia de desenvolvimento orientado por comportamento e serve como a primeira palavra no nome do teste, que deve ser uma frase completa. O uso segue uma sintaxe semelhante à do RSpec .
O código abaixo testa esta função
function helloWorld() {
return 'Hello world!';
}
e verifica se sua saída é realmente o texto "Olá, mundo!".
describe('Hello world', function() {
it('says hello', function() {
expect(helloWorld()).toEqual('Hello world!');
});
});
Jasmine fornece um rico conjunto de matchers integrados. No exemplo acima, toEqual verifica a igualdade entre o valor retornado da função helloWorld () e 'Hello world!' fragmento. Isso é o mesmo que as afirmações usadas em outras estruturas de teste. Os comparadores Jasmine simplesmente retornam um valor booleano: verdadeiro se a expectativa for correspondida (uma maneira de indicar que o teste foi aprovado) ou falso se a expectativa não corresponder. Uma boa prática é colocar uma única expectativa em uma especificação individual de teste it ().
Outros matchers integrados incluem toBe, toBeTruthy, toBeFalsy, toContain, toBeDefined, toBeUndefined, toBeNull, toBeNaN, toBeGreaterThan, toBeLessThan, toBeCloseTo. O comparador de identidade toBe verifica se duas coisas são o mesmo objeto. Os matchers de condição toBeTruthy, toBeFalsy avaliam se algo é verdadeiro ou falso e toBeDefined, toBeUndefined verifica se algo está definido ou indefinido. Como o nome sugere, toBeNull verifica se algo é nulo e toBeNaN verifica se algo não é um número ( NaN ). O combinador de precisão 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 indicada pelo segundo parâmetro. Matcher toContain é usado para verificar se um elemento, objeto ou substring está contido em um array, lista ou string.
O matcher interno especial toThrow é usado para verificar se uma exceção foi lançada. O código a seguir verifica se "Alguma exceção" é lançada.
describe('Expect to throw an exception', function() {
it('throws some exception', function() {
expect( function(){ throw('Some exception'); }).toThrow('Some exception');
});
});
Jasmine possui vários outros recursos, como matchers personalizados, spies e suporte para especificações assíncronas.
Corredores de teste Jasmine
Jasmine vem com um executor de teste embutido. Os testes Jasmine podem executar testes de navegador incluindo um arquivo SpecRunner.html simples ou usando-o como um executor de teste de linha de comando com suporte para várias linguagens como Nodejs, Python, Ruby ou (método antigo) usando Karma, uma ferramenta executora de teste simples de JavaScript .
Comparação entre Jasmine e Mocha
Mocha é outra estrutura de teste de Javascript popular. A comparação entre Jasmine e Mocha é fornecida na tabela abaixo.
| Jasmim | Mocha |
|---|---|
| Jasmine vem com duplas de teste usando espiões. | O Mocha não vem com uma biblioteca dupla de teste e geralmente usa uma biblioteca externa como o Sinon. |
| Jasmine possui um utilitário de linha de comando para executar testes. | O Mocha possui um utilitário de linha de comando para executar testes. |
| Jasmine tem afirmações embutidas nele. | Mocha não tem uma biblioteca de asserções e usa Chai para asserções. |
Benefícios
- O objetivo do Jasmine é ser independente de navegador, estrutura, plataforma e linguagem.
- Além do desenvolvimento orientado por comportamento, Jasmine também oferece suporte ao desenvolvimento dirigido por teste .
Veja também
- Lista de bibliotecas JavaScript
- Lista de estruturas de teste de unidade
- Mocha (estrutura JavaScript)
- QUnit