in Javascript
Como garantir que essa porra não quebre?
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
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
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