SlideShare uma empresa Scribd logo
1 de 39
Baixar para ler offline
Construindo APIs
testáveis com Node.js
1
OPA!
Sou o Waldemar
Neto
Software Engineer
http://walde.co
@waldemarnt
2
3
http://bit.ly/nodejs-testavel
Mais baixado na semana
4
Node.js????
5
A migração de novos Devs
6
Javascript é Event Driven
7
Multi Threading
8
Background tasks
9
Task Queue
10
Micro e Macro tasks
11
12
TDD - Desenvolvimento Guiado por Testes
13
Piramide de testes
14
15
Estruturando uma API em Node.js
16
Separação por responsábilidade
17
Separação por funcionalidade
18
O que fica na raiz?
19
Começando uma API com
ExpressJS
20
Testando de fora para dentro / outside-in
21
O que eu uso para teste de integração?
22
chai.js
Mocha.js
TDD: RED
supertest
Separar a inicialização da configuração
23
src/app.js
server.js
Teste de integração por rota
src/app.js
TDD: GREEN
24
Separando as rotas
src/app.js
25
Rotas por recurso
src/routes/index.js
src/routes/products.js
TDD: GREEN
26
Adicionando Models
src/models/products.js
27
Adicionando Controllers
28
Sinon.js
29
Adicionando Controllers
src/controllers/products.js
30
Dependencia como parametro
src/controllers/products.js
31
Default parameters em dependencias
src/controllers/products.js
32
Integrando a rota com controller
33
Atualizando a rota de products
34
Callbacks do Mocha
35
E o test case?
TDD: REFACTOR
36
Módulos uteis para teste
● Proxyquire
● Nock
37
Módulos pequenos e com uma
responsabilidade
38
Valeu!
Perguntas?
https://github.com/waldemarnt
https://twitter.com/waldemarnt
https://fb.com/waldemarnt
http://walde.co/
39

Mais conteúdo relacionado

Mais procurados

Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidBruno Oliveira
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...tdc-globalcode
 
Apenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidApenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidElias Nogueira
 
Ruby para testers I
Ruby para testers IRuby para testers I
Ruby para testers ITestRock!
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometemFernando Henriques
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros PassosRomualdo Andre
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Mariana Elisa Moisés , CTFL-AT,MBA
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp netAnderson Wernek
 
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
 
Ruby para testers III - Selenium
Ruby para testers III - SeleniumRuby para testers III - Selenium
Ruby para testers III - SeleniumTestRock!
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosIgor Abade
 
Automação de build para frontend
Automação de build para frontendAutomação de build para frontend
Automação de build para frontendVanessa Me Tonini
 
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)Igor Abade
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visagejesuinoPower
 

Mais procurados (20)

GDG Angular 2
GDG Angular 2GDG Angular 2
GDG Angular 2
 
Lab
LabLab
Lab
 
Chega de lendas! JavaFX em Android
Chega de lendas! JavaFX em AndroidChega de lendas! JavaFX em Android
Chega de lendas! JavaFX em Android
 
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
TDC2017 | Florianópolis - Trilha Java Melhorando a performance do seu Código ...
 
Apenas um script de teste para iOS e Android
Apenas um script de teste para iOS e AndroidApenas um script de teste para iOS e Android
Apenas um script de teste para iOS e Android
 
Ruby para testers I
Ruby para testers IRuby para testers I
Ruby para testers I
 
9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem9 erros que desenvolvedores Node.js cometem
9 erros que desenvolvedores Node.js cometem
 
Android Studio: Primeiros Passos
Android Studio: Primeiros PassosAndroid Studio: Primeiros Passos
Android Studio: Primeiros Passos
 
Estratégia de Build e Release - DevOps
Estratégia de Build e Release - DevOpsEstratégia de Build e Release - DevOps
Estratégia de Build e Release - DevOps
 
Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!Visual Regression Tests - Dando um Upload nos seus testes de UI!
Visual Regression Tests - Dando um Upload nos seus testes de UI!
 
Criar um sistema com asp net
Criar um sistema com asp netCriar um sistema com asp net
Criar um sistema com asp net
 
Cultura de testes em times mobile
Cultura de testes em times mobileCultura de testes em times mobile
Cultura de testes em times mobile
 
Testes E2E em Cypress com JS
Testes E2E em Cypress com JSTestes E2E em Cypress com JS
Testes E2E em Cypress com JS
 
Ruby para testers III - Selenium
Ruby para testers III - SeleniumRuby para testers III - Selenium
Ruby para testers III - Selenium
 
Acelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidosAcelere - e melhore! - o feedback com testes automatizados rápidos
Acelere - e melhore! - o feedback com testes automatizados rápidos
 
Automação de build para frontend
Automação de build para frontendAutomação de build para frontend
Automação de build para frontend
 
Middlewares ASP.NET
Middlewares ASP.NETMiddlewares ASP.NET
Middlewares ASP.NET
 
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
Smoke tests, deployment e rollback automatizados (DevOps Summit Brasil 2016)
 
Arquitetura Node com NestJS
Arquitetura Node com NestJSArquitetura Node com NestJS
Arquitetura Node com NestJS
 
Introdução ao java fx e visage
Introdução ao java fx e visageIntrodução ao java fx e visage
Introdução ao java fx e visage
 

Semelhante a Construindo APIs testáveis com Node.js

ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?Douglas Aguiar
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014Giovanni Bassi
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JSRodrigo Urubatan
 
12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwordsWaldemar Neto
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.jsJoel Rodrigues
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7George Gastaldi
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJSGiovanni Bassi
 
Dockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSDockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSLuís Bianchin
 
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!José Barbosa
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.jsDenis Velrino
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Renato Groff
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.Filipe Morelli
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Renato Groff
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDImarlosimon
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...Renato Groffe
 

Semelhante a Construindo APIs testáveis com Node.js (20)

ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?ASP .NET MVC - Você esta pronto para a pílula vermelha?
ASP .NET MVC - Você esta pronto para a pílula vermelha?
 
ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014ASP.NET vNext no .NET Architects Days 2014
ASP.NET vNext no .NET Architects Days 2014
 
Docker para devs .NET
Docker para devs .NETDocker para devs .NET
Docker para devs .NET
 
Introdução ao Nodejs
Introdução ao NodejsIntrodução ao Nodejs
Introdução ao Nodejs
 
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015  Porto Alegre - Interfaces ricas com Rails e React.JSTDC2015  Porto Alegre - Interfaces ricas com Rails e React.JS
TDC2015 Porto Alegre - Interfaces ricas com Rails e React.JS
 
Node.js e Express
Node.js e ExpressNode.js e Express
Node.js e Express
 
12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords12 Factor App Docker na Cloud e outras buzzwords
12 Factor App Docker na Cloud e outras buzzwords
 
Protractor
ProtractorProtractor
Protractor
 
Primeiros passos no Vue.js
Primeiros passos no Vue.jsPrimeiros passos no Vue.js
Primeiros passos no Vue.js
 
Apresentação
ApresentaçãoApresentação
Apresentação
 
WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7WildFly Swarm: Criando Microservices com Java EE 7
WildFly Swarm: Criando Microservices com Java EE 7
 
Introdução ao NodeJS
Introdução ao NodeJSIntrodução ao NodeJS
Introdução ao NodeJS
 
Dockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJSDockerizando uma aplicação NodeJS
Dockerizando uma aplicação NodeJS
 
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
Vuejs Angularjs e Reactjs. Veja as diferenças de cada framework!
 
Workshop react + adonis.js
Workshop react + adonis.jsWorkshop react + adonis.js
Workshop react + adonis.js
 
Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018Docker para Desenvolvedores - Developers-BR - Agosto-2018
Docker para Desenvolvedores - Developers-BR - Agosto-2018
 
NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.NodeJS - Tutorial de forma simples e pratica.
NodeJS - Tutorial de forma simples e pratica.
 
Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018Docker para Desenvolvedores - Developers-BR - Julho-2018
Docker para Desenvolvedores - Developers-BR - Julho-2018
 
Sap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDISap Comunity Day Brasil 2009 - SAP NWDI
Sap Comunity Day Brasil 2009 - SAP NWDI
 
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
ASP.NET Core + Docker Compose: deployment descomplicado com containers - .NET...
 

Mais de Waldemar Neto

12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwordsWaldemar Neto
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerWaldemar Neto
 
Elasticsearch Aggregations
Elasticsearch AggregationsElasticsearch Aggregations
Elasticsearch AggregationsWaldemar Neto
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleWaldemar Neto
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaWaldemar Neto
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para foraWaldemar Neto
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesWaldemar Neto
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesWaldemar Neto
 
Cakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteCakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteWaldemar Neto
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaWaldemar Neto
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawnsWaldemar Neto
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasWaldemar Neto
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsulWaldemar Neto
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografiaWaldemar Neto
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open sourceWaldemar Neto
 

Mais de Waldemar Neto (17)

12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords12 Factor APPS, docker na cloud e outras buzzwords
12 Factor APPS, docker na cloud e outras buzzwords
 
Desenvolvendo com PHP e Docker
Desenvolvendo com PHP e DockerDesenvolvendo com PHP e Docker
Desenvolvendo com PHP e Docker
 
Elasticsearch Aggregations
Elasticsearch AggregationsElasticsearch Aggregations
Elasticsearch Aggregations
 
Symfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundleSymfony2 e Elasticsearch com FosElasticaBundle
Symfony2 e Elasticsearch com FosElasticaBundle
 
ELK introduction
ELK introductionELK introduction
ELK introduction
 
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - KibanaMonitoramento com ELK - Elasticsearch - Logstash - Kibana
Monitoramento com ELK - Elasticsearch - Logstash - Kibana
 
Elasticsearch de dentro para fora
Elasticsearch de dentro para foraElasticsearch de dentro para fora
Elasticsearch de dentro para fora
 
Elasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queriesElasticsearch shards, index, filters and queries
Elasticsearch shards, index, filters and queries
 
O que é docker?
O que é docker?O que é docker?
O que é docker?
 
No mundo das ap is com Restful webservices
No mundo das ap is com Restful webservicesNo mundo das ap is com Restful webservices
No mundo das ap is com Restful webservices
 
Cakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita genteCakephp 3.0 o bolo ainda serve muita gente
Cakephp 3.0 o bolo ainda serve muita gente
 
No sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglotaNo sql no mundo da persistencia poliglota
No sql no mundo da persistencia poliglota
 
Android para padawns
Android para padawnsAndroid para padawns
Android para padawns
 
Como o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscasComo o elasticsearch salvou minhas buscas
Como o elasticsearch salvou minhas buscas
 
CakePHP workshop ifsul
CakePHP workshop ifsulCakePHP workshop ifsul
CakePHP workshop ifsul
 
O que é esteganografia
O que é esteganografiaO que é esteganografia
O que é esteganografia
 
Divisão de conhecimento e open source
Divisão de conhecimento e open sourceDivisão de conhecimento e open source
Divisão de conhecimento e open source
 

Construindo APIs testáveis com Node.js