Sabe aquele ferramenta fodaa?

que promete resolver os seus problemas

entao...

não é isso

teste automatizado

AINDA

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

TUDO ?

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

Made with Slides.com