Automated Tests

in Javascript

Como garantir que essa porra não quebre?

Com tests automatizados

Unit

 

- cobre todos os compartamentos de uma funcionalidade

 

- fáceis de escrever e dar manutenção

 

- te orientam a escrever pensando em todos os comportamentos

 

- representam de 80 a 90% dos tests escritos

Com tests automatizados

Integration

 

- testa a integração entre módulos, injeção de dependências

 

- um pouco mais difíceis de escrever

 

- representam de 5 a 10% dos testes escritos

Com tests automatizados

E2E

 

- testa no ambiente final

 

- difíceis de escrever e dar manutenção

 

- usados para coisas realmente sensíveis

 

- representam em média 5% dos testes

Automatizando tests

// package.json

"scripts": {
  "test": "shell-scripts/test",
  "test:unit": "shell-scripts/test",
  "test:e2e": "shell-scripts/test"
}

com npm scripts 

Automatizando tests

#!/bin/bash

set -e

NODE_ENV=test node node_modules/.bin/istanbul cover _mocha -- --reporter spec \
test/e2e/*.js \
test/e2e/controllers.js

if [ ! -z "$EXPORT_COVERAGE" ]; then
	cat ./coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js

	rm -rf ./coverage
fi

script de test

Automatizando tests

npm test

npm run test:e2e

npm run -s test:unit

script de test rodando

Ferramentas de tests

Frameworks

- Mocha

- Jasmine

- qUnit

Oferecem uma extrutura para escrever seus tests

Assertion

- Assert

- Should

- Chai

Specif Tools

- Karma

- Protractor

- Supertest

Facilitam a escrita e controle dos tests

Frameworks tests

Mocha e Chai

describe('Users', function() {
  describe('.list - GET api/users', function() {
    it('no token provided', function(done) {
      request(app)
        .get('/api/users')
        .end(function(err, res) {
          expect(res.statusCode).to.equal(401);
          expect(res.body).to.have.property('message', 'no token provided');
          done();
        });
    });

    // ...
    // more tests with it
});

Trabalhando sem medo de quebrar algo

Alta Produtividade

Sem traumas

Made with Slides.com