SlideShare uma empresa Scribd logo
1 de 45
Baixar para ler offline
Testing Node.js
Carlos Mendes
Programador há 10 anos
Líder Técnico do time Tecnologia do
SAS
Mestrando - DevOps e Microservices
Corredor de Longas Distâncias
Mas, antes, uma reflexão...
E então, como
testar?
Por que testar um
software Node.js?
Porque é código e
precisa ser
testado!
mas().then(eh => {
assíncrono
})
&& dinâmico
&& interpretado
Teste de Unidade
* Testes sem dependências
* Rápido
* Ajuda o “EU” do futuro
* Bom para regra de negócio
* Testa um conceito por vez
Anatomia do Teste
Vamos testar o
método indexOf
// Arranje
const numbers = [1,2,3]
const expected = -1
// Act
const actual = numbers.indexOf(4)
// Assert
expected === actual
E como faz em Node.js?
- Node e Browser
- Bom pra testes async
- Posso escolher minha
biblioteca de assert
$ npm i --save-dev mocha
Bibliotecas de Assert
- Expect
- Chai
- Should
- Shouldy
...
describe(‘#indexOf’, () => {
it(‘deveria -1 quando n existir’,() => {
const numbers = [1,2,3]
const actual = numbers.indexOf(4)
expect(actual).to.be(-1)
})
})
Teste de
Integração
Testa a
integração entre
seu software e
componentes
externos: API,
Banco de Dados...
E se o método
indexOf fizer
parte de uma api
de banco de
dados?
Hooks
- before
- after
- beforeEach
- afterEach
before(openConnection)
describe(‘#indexOf’, () => {
it(‘deveria -1 quando n existir’,() => {
const numbers = [1,2,3]
const actual = numbers.indexOf(4)
expect(actual).to.be(-1)
})
})
after(closeConnection)
E se o método
indexOf for
async?
Async
- done
- return
- async/await
done()
before(openConnection)
describe(‘#indexOf’, () => {
it(‘deveria -1 quando n existir’,(done) =>
{
const numbers = [1,2,3]
numbers.indexOf(4) .then(actual => {
expect(actual).to.be(-1)
done()
})
})
})
after(closeConnection)
return
before(openConnection)
describe(‘#indexOf’, () => {
it(‘deveria -1 quando n existir’,() => {
const numbers = [1,2,3]
return numbers.indexOf(4) .then(actual => {
expect(actual).to.be(-1)
})
})
})
after(closeConnection)
await
before(openConnection)
describe(‘#indexOf’, async () => {
it(‘deveria -1 quando n existir’,() => {
const numbers = [1,2,3]
const actual = await numbers.indexOf(4)
expect(actual).to.be(-1)
})
})
after(closeConnection)
E uma api express.js?
request(app)
.get('/user')
.expect('Content-Type', /json/)
.expect('Content-Length', '15')
.expect(200)
.end(function(err, res) {
if (err) throw err;
});
E as dependências?
Mongo, Redis, Api XPTO, qualquer
coisa...
version: '3'
services:
db:
image: mongo
ports:
- 27017:27017
cache:
image: redis
ports:
- 6379:6379
Produtividade
$ mocha --watch
$ npm i eslint
$ npm i eslint-plugin-mocha
*** Há vagas ***
tecnologia.portalsas.com.br

Mais conteúdo relacionado

Semelhante a Testando Node.js

Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBLuiz Duarte
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBiMasters
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarFilipe Falcão
 
Msp TechDay - TypeScript + React + Redux
Msp TechDay - TypeScript + React + ReduxMsp TechDay - TypeScript + React + Redux
Msp TechDay - TypeScript + React + ReduxLeonardoPrange
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do MantraDionatan default
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesOziel Moreira Neto
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiRicardo Martins ☁
 
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de TesteMantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Testemauricioszabo
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsLucas Caton
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoEduardo Bohrer
 
Estágio integrado davi serrano
Estágio integrado   davi serranoEstágio integrado   davi serrano
Estágio integrado davi serranoDavi Serrano
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JSNàtali Cabral
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Joao Lucas Santana
 

Semelhante a Testando Node.js (20)

Mecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDBMecanismo de Busca com Node.js + MongoDB
Mecanismo de Busca com Node.js + MongoDB
 
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDBJS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
JS Experience 2017 - Criação de mecanismos de busca usando Node.js + MongoDB
 
Node.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizarNode.js: 5 razões para começar a utilizar
Node.js: 5 razões para começar a utilizar
 
Xamarin UI Test + BDD Specflow
Xamarin UI Test + BDD SpecflowXamarin UI Test + BDD Specflow
Xamarin UI Test + BDD Specflow
 
Msp TechDay - TypeScript + React + Redux
Msp TechDay - TypeScript + React + ReduxMsp TechDay - TypeScript + React + Redux
Msp TechDay - TypeScript + React + Redux
 
TDD com Python (Completo)
TDD com Python (Completo)TDD com Python (Completo)
TDD com Python (Completo)
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
TDD: A Essência do Mantra
TDD: A Essência do MantraTDD: A Essência do Mantra
TDD: A Essência do Mantra
 
Linguagem de Programação Java para Iniciantes
Linguagem de Programação Java para IniciantesLinguagem de Programação Java para Iniciantes
Linguagem de Programação Java para Iniciantes
 
Node js - Javascript Server Side
Node js - Javascript Server SideNode js - Javascript Server Side
Node js - Javascript Server Side
 
Apresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - BemobiApresentando o OpsWorks - Bemobi
Apresentando o OpsWorks - Bemobi
 
Testes - Para que?
Testes - Para que?Testes - Para que?
Testes - Para que?
 
Mantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de TesteMantendo a Qualidade dos Códigos de Teste
Mantendo a Qualidade dos Códigos de Teste
 
Java - Primeiros passos
Java - Primeiros passosJava - Primeiros passos
Java - Primeiros passos
 
Desenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on RailsDesenvolvimento ágil de software com Ruby on Rails
Desenvolvimento ágil de software com Ruby on Rails
 
BDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e SpecflowBDD com Xamarin UI Test e Specflow
BDD com Xamarin UI Test e Specflow
 
Node.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançadoNode.JS - Workshop do básico ao avançado
Node.JS - Workshop do básico ao avançado
 
Estágio integrado davi serrano
Estágio integrado   davi serranoEstágio integrado   davi serrano
Estágio integrado davi serrano
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)Desenvolvimento web com Ruby on Rails (parte 1)
Desenvolvimento web com Ruby on Rails (parte 1)
 

Testando Node.js