jasmine framework tutorial including jasmine jquery with examples
Este artigo cobre a estrutura de testes Jasmine e suas construções. Além disso, aprenda sobre o pacote Jasmine-Jquery que estende Jasmine para testar aplicativos Jquery:
Aprendemos tudo sobre Carma em nosso tutorial anterior desta série.
Neste tutorial, aprenderemos como usar Jasmine para escrever testes para um aplicativo da web JavaScript e também saber como usar o pacote baseado em nó Jasmine-Jquery para testar o aplicativo da web Jquery.
Aqui, vamos nos concentrar principalmente nas construções básicas do Jasmine para escrever testes.
java como fazer uma fila
Vamos começar!!
O que você aprenderá:
O que são frameworks de teste?
Frameworks de teste são suítes de programas ou pacotes que facilitam o teste de outro programa para garantir sua qualidade. Cada plataforma de programação tem sua própria estrutura de teste, como você deve ter aprendido em nosso tutorial anterior.
Existem diferentes conjuntos de testes que podem ser realizados em qualquer sistema de software. Exemplos de tais testes incluem teste de unidade, teste ponta a ponta (e2e), etc. Verifique Aqui para mais detalhes.
Exemplos de frameworks de teste para aplicativos JavaScript incluem Mocha, Jasmine, estagiário, jest, Qunit, etc.
Introdução ao Jasmine Framework

Existem diferentes abordagens de desenvolvimento disponíveis no cenário atual. Destas, duas das abordagens de desenvolvimento mais populares incluem Test-Driven Development (TDD) e Behavior Driven Development (BDD).
O Desenvolvimento Orientado a Testes é uma abordagem de desenvolvimento em que escrevemos os testes primeiro e, em seguida, os executamos. Cada teste falha na primeira execução porque as funções que ele usa ainda não foram escritas.
Em seguida, escrevemos as funções e executamos os testes novamente. Aqui, alguns dos testes falham e os outros passam. Continuamos refatorando o código para que todos os testes passem.
O Behavioral Driven Development também segue a mesma abordagem. A única diferença é que o BDD é escrito para satisfazer os proprietários do software (orientado para o cliente / negócios), ou seja, para atender aos recursos do software com os requisitos de negócios ou o comportamento esperado.
Considerando que o TDD foi escrito para satisfazer os desenvolvedores do software, para que possam ter certeza de que as funções do software que são usadas na construção dos recursos estão produzindo resultados precisos, estáveis e confiáveis.
Ver Aqui para saber mais sobre TDD vs BDD.
Jasmine é uma estrutura de teste de JavaScript orientada por comportamento, o que torna a escrita de testes fácil e não depende de nenhuma outra estrutura.
Existem duas maneiras de usar Jasmine para escrever seus testes. Uma maneira é usar a versão autônoma que vem com specRunner.html (que exibe os resultados do teste em um navegador). A outra maneira é simplesmente instalar o Jasmine, escrever seus testes e executá-los com um executor de testes como o Karma para obter os resultados exibidos na janela do console.
Estaríamos examinando ambas as maneiras de usar Jasmine em nosso próximo tutorial.
Construções básicas de Jasmine para escrever testes
Listados abaixo estão as várias construções do Jasmine para escrever testes.
Vamos ver!!
# 1) descreve: Esta construção é usada para escrever um conjunto de testes. Um conjunto de testes é uma coleção de vários testes. ‘Descrever’ é uma função em si que leva dois parâmetros: O nome da suíte e uma função .
O parâmetro de função contém uma coleção de testes agrupados no conjunto de testes.
# 2) isso: Esta construção é usada para escrever uma especificação de teste. Uma especificação de teste é um conjunto de construções que testam uma expectativa particular ou mais minuciosa de um sistema.
Assim como a construção de descrição, também leva dois parâmetros: O nome do teste e a função que contém as assertivas avaliando se a expectativa é cumprida ou não.
# 3) esperar : Esta construção ajuda a testar se as expectativas do sistema de software são atendidas ou não.
Ele pega um parâmetro chamado real (que é o resultado que o sistema de software está retornando) e, em seguida, é encadeado com outra construção chamada matcher (resultado esperado).
# 4) Partidas : Esta é uma coleção de construções às quais a construção expect está ligada. Determina se a expectativa é cumprida ou não.
Essas construções pegam o valor esperado do teste mais próximo que está sendo realizado e o comparam com o valor real obtido na execução do teste. Clique Aqui para uma lista completa de construções de matcher Jasmine
# 5) beforeEach : Esta é uma construção global, fornecida pela Jasmine para ajudá-lo a manter seus testes SECOS (não se repita). Esta construção é normalmente usada no parâmetro de função da construção de descrição.
Qualquer código interno é executado uma vez antes que as especificações dos pacotes sejam executadas. Portanto, qualquer código que você deseja executar primeiro, antes de todas as especificações do pacote, deve ser colocado aqui.
# 6) afterEach: Essa construção é igual a beforeEach, e a diferença é que o código que ela contém é executado após cada código, uma vez que a construção de descrição é executada.
# 7) este : Esta construção é um objeto vazio que pode ser usado para compartilhar valores nas construções ‘beforeEach’, ‘afterEach’ e ‘it’ em quaisquer suítes de teste. Cada suíte de teste tem seu próprio objeto e o objeto é redefinido como vazio antes que as suítes de teste sejam executadas.
# 8) xdescribe : Esta construção é usada para desabilitar os pacotes de software. Ele simplesmente diz ao executor de teste para pular o conjunto de testes e, portanto, seu resultado não é mostrado e considerado.
# 9) hit : Esta construção é usada para indicar uma especificação em um conjunto como uma especificação pendente. Uma especificação pendente é uma especificação que não será executada, mas terá seus nomes mostrados no resultado do teste como pendentes.
Além disso, se em qualquer especificação a função pendente for chamada, a especificação será marcada como uma especificação pendente. Qualquer especificação declarada sem um corpo de função também é marcada como pendente.
# 10) spyOn : Esta construção é usada para criar um espião Jasmine. Os espiões são zombadores. Mocks são objetos falsos criados para representar ou imitar o objeto real. Mocks são necessários para evitar o custo indireto de criar o objeto real que eles representam.
A essência do teste de unidade de um código é ver como uma função se comporta sob várias condições, independentemente das outras unidades conectadas ou serão conectadas a ela.
Portanto, realizamos testes de unidade de front-end para ver como uma unidade do front-end de nosso produto de software se comportará independentemente das outras unidades de front-end que serão conectadas ou estão conectadas a ela.
Durante este teste, fazemos chamadas para vários argumentos e funções que podem ser dependentes de outras funções e objetos, como conexões de rede, fontes de dados e arquivos.
c # perguntas da entrevista com respostas
Para atender a essas dependências (para que possamos realizar testes de unidade front-end), é necessário disponibilizar os recursos necessários. Portanto, adotamos mocks para imitar os objetos do mundo real e evitar o custo indireto de realmente criá-los.
Observe que, em um nível simples, spyOn é usado para testar se uma função dependente é realmente chamada, e essa função dependente pode ser apenas uma função simples que é definida no objeto que estamos espionando.
A função spyOn recebe dois parâmetros: o objeto que está sendo espiado e a função de dependência que ele contém, que é verificada para garantir que nossa função o chame.
Os espiões existem na suíte ou especificação em que estão definidos. Depois que a suíte ou especificação é executada, o espião deixa de existir.
# 11) createSpy: Essa construção serve ao mesmo propósito que spyOn, mas a diferença é que essa função torna possível substituir a função dependente por uma falsa para teste.
Por que eu tenho que fazer isso? Isso é útil quando a dependência original também depende de outros recursos que não estão disponíveis no contexto do teste.
Essa função é acessada usando o objeto Jasmine com um ponto, ou seja, Jasmine.createSpy (parâmetros). Leva apenas um parâmetro, que é uma string que representa o nome da dependência para a qual estamos criando o mock.
Observe que depois de criar um espião, o espião na primeira chamada retorna indefinido, pois a primeira chamada é considerada como um treinamento. Então, após as chamadas subsequentes, a função retorna o valor real. Veja mais detalhes conforme exploramos abaixo.
Recurso de dupla função do teste Jasmine
As construções spyOn e createSpy tornam possível a criação de mocks (para dependência). Isso não é outra coisa que testar duas funções em um teste, daí a declaração “teste de função dupla”.
A outra palavra que pode ser usada para se referir a simulações é 'tocos'.
Matchers de espiões: Existem vários matchers que atendem à necessidade de interagir com espiões. Eles incluem: ‘ToHaveBeenCalled’ e ‘toHaveBeenCalledWith’ .
-
- toHaveBeenCalled : Isso é usado em uma especificação para determinar se a dependência que está sendo espionada foi chamada.
- toHaveBeenCalledWith : Isso é usado em uma especificação para determinar se a dependência que está sendo espionada foi chamada com um determinado conjunto de parâmetros.
Visita Aqui para um esboço detalhado de todas as construções Jasmine.
melhor downloader de mp3 para telefones Android
Duas maneiras de usar o Jasmine
Existem duas maneiras de escrever testes Jasmine. Uma é usar Jasmine como uma distribuição autônoma por meio de specRunner e a outra é usar Jasmine com executor de teste.
Vamos primeiro dar uma olhada na execução de testes Jasmine por meio do specRunner.
Como usar a distribuição autônoma Jasmine?
Clique Aqui e baixe a distribuição autônoma clicando em Jasmim independente .
Descompacte o arquivo na pasta do projeto. Você descobrirá que ele adiciona esses diretórios ao diretório do projeto: lib, src e spec; e também adiciona estes arquivos: specRunner.html e MIT.LICENSE.
O diretório lib contém a biblioteca Jasmine que executa os testes contidos nos arquivos de teste adicionados ao arquivo specRunner.html. O arquivo specRunner.html permite que você execute o teste e visualize o resultado no navegador em um formato de página da web, em vez de na janela do console.
O diretório src contém os códigos-fonte front-end e o diretório spec contém os arquivos de teste escritos usando suítes de teste Jasmine. Por padrão, você pode ver alguns conjuntos de testes e arquivos dentro dos diretórios, mas não vamos usá-los; escreveríamos nossos próprios testes em nossos tutoriais subsequentes.
Usando Jasmine com um Test-Runner
Esta é a segunda maneira de usar o Jasmine, onde você configura um executor de teste como Karma e o alimenta com seu arquivo de origem e o arquivo de especificação de teste para executar os testes.
Em seguida, você pode exibir os resultados e gerar relatórios usando o Istanbul ou publicar os resultados do teste em coveralls.io.
Introdução a Jasmine-Jquery
Jasmine-Jquery é um pacote de nós que auxilia no teste de códigos front-end construídos com jquery. De certa forma, ele estende a estrutura Jasmine para ser adequada para o teste de front-end do Jquery.
As extensões que ele adiciona à estrutura Jasmine incluem:
- Um conjunto de matchers personalizados para a estrutura Jquery, como toBeChecked, toBeDisabled, toBeEmpty, etc.
- Uma API para lidar com acessórios HTML, CSS e JSON em nossas especificações.
Agora a questão é “o que é uma API?” Uma API (interface de programação de aplicativo) é uma interface que concede acesso a certas funções que podem levar tempo e recursos para você construir do zero.
Outra questão é o que são jogos? Fixtures são estados predefinidos de um objeto que geralmente criamos ao escrever testes para estabelecer uma linha de base (um ambiente fixo e conhecido) contra a qual os testes são executados para tornar os resultados repetíveis.
Ver Aqui para obter mais detalhes sobre os matchers personalizados e API (s).
Conclusão
Neste tutorial, tentamos entender o que é uma estrutura de teste e apresentamos o Jasmine como uma estrutura de teste JavaScript. Vimos diferentes construções Jasmine que podem ser usadas para escrever especificações de teste e finalmente introduzimos Jasmine-Jquery, que é um pacote baseado em nó que estende Jasmine para poder testar aplicativos Jquery.
Aprendizado
- Uma estrutura de teste é um conjunto de programas ou pacotes que facilitam o teste do software para garantir a qualidade do software desenvolvido.
- Jasmine é uma ferramenta de desenvolvimento orientada por comportamento que fornece construções que facilitam a escrita de especificações de teste para aplicativos JavaScript.
- O Desenvolvimento Orientado a Testes é uma abordagem de desenvolvimento em que escrevemos os testes primeiro e, em seguida, os executamos. Cada teste falha na primeira execução porque a função que ele usa ainda não foi escrita. Em seguida, escrevemos as funções e executamos novamente os testes. Aqui, alguns dos testes falham e outros são aprovados. Então, continuamos a refatorar o código até que todos os testes sejam aprovados.
- Uma abordagem de desenvolvimento orientada por comportamento é uma abordagem de desenvolvimento em que os testes são escritos para verificar se os recursos do software se comportam conforme o esperado por todas as partes interessadas.
- Jasmine-Jquery é um pacote de nós que auxilia no teste de códigos front-end construídos com Jquery.
Próximo tutorial
Em nosso próximo tutorial, exploraremos as maneiras de usar essas duas ferramentas (Jasmine e Karma) para escrever especificações de teste para um projeto típico. Também veríamos como usar as outras ferramentas, como gulp, browserify, etc., necessárias para que nossos testes funcionem.
PREV Tutorial | PRÓXIMO Tutorial
Leitura recomendada
- 8 Melhores Ferramentas de Desenvolvimento Orientado a Comportamento (BDD) e estruturas de teste
- Como os testadores estão envolvidos nas técnicas de TDD, BDD e ATDD
- TDD Vs BDD - Analise as diferenças com exemplos
- Estrutura BDD (Behavior Driven Development): um tutorial completo
- Como escrever um documento de estratégia de teste (com modelo de estratégia de teste de amostra)
- As 10 melhores ferramentas de teste de API em 2021 (ferramentas de teste de API SOAP e REST)
- Tutorial de teste de API: um guia completo para iniciantes
- Tutorial Python DateTime com exemplos