que promete resolver os seus problemas
entao...
não é isso
teste automatizado
DIFICULDADES
- curva de aprendizado
- difícil implementação
DIFICULDADES:
curva de aprendizado
- muitas ferramentas
- conceitos diferentes
- jasmine, mocha, qUnit, istanbul, sinon, chai, karma, protractor ...
- unit, integration, e2e, TDD, BDD...
DIFICULDADES:
difícil implementação
- arquitetura do projeto pode impedir de ser testável
- cross browser, multi device, banco de dados
- muita ferramentas para resolver vários problemas
Ok, mas por que precisamos de tests?
Se a sua aplicação faz 100 coisas
e você irá aplicar a 101
o que garante que você não quebrou algo anteriormente
você humano, garante que nunca irá esquecer de testar algo?
Framework de tests
- irá lhe dar tudo que você precisa pra os seus tests
Jasmine - um bom framework
- permite a você fazer coisas antes e depois do test
- lhe oferece assertions para lhe facilitar a vida
- lhe permitem passar mais tempo desenvolvendo o seu código, ao invés de nos tests
Assertions
it('test if my var is a number positive', function() {
var possibleNumber = '1'
expect(typeof possibleNumber === 'number' && possibleNumber >= 0)
})
it('test if my var is a number positive', function() {
var possibleNumber = '1'
expect(possibleNumber).to.be.at.least(0)
})
errado
correto
Assertion são muito mais produtivas, você vai codar seu código, não no test
it('test keys in an array', function() {
var users = [
{firstname: 'Darlan', lastname: 'Mendonça'},
{firstname: 'Clara', lastname: 'Lúcia'},
]
var index = 0
while (index < users.length) {
expect(users[index].hasOwnProperty('firstname'))
expect(users[index].hasOwnProperty('lastname'))
index++
}
})
it('test keys in an array', function() {
var users = [
{firstname: 'Darlan', lastname: 'Mendonça'},
{firstname: 'Clara', lastname: 'Lúcia'},
]
expect(users).to.all.have.all.keys('firstname', 'lastname')
})
errado
correto
As assertions do Jasmine já vem no framework,
mas não permitem PLUGAR novas assertions
lhes apresento, o melhor assertion lib que conheço
Chai.js