TDDing com Javascript

Post on 26-Jan-2017

111 views 0 download

Transcript of TDDing com Javascript

Javascript

Alexandre Gomes

testando

TestesAutomatizados

TDDtest driven development

planejar

executaravaliar

intenção

códigomelhorias

vermelho

verderefactoring

intenção código melhorias

intenção código melhorias

intenção código melhorias

intenção código melhorias

https://weblogs.java.net/blog/johnsmart/archive/2014/01/04/bdd-unit-tests-and-power-fluent-assertions

http://jsunit.berlios.de/

Suite de Testes Cadastro de Usuários {

}

testeInclusaoDeUsuarioTudoCerto { ...}

testeInclusaoDeUsuarioFaltandoDados { ...}

descreva Cadastro de Usuários {

}

ela Deveria funcionar em um cenário normal { ...}

ela Deveria dar erro se estiver faltando dados { ...}

descreva Inclusão de Usuários {

}

descreva Exclusão de Usuários { ... }

• Cadastro de Usuários

• Inclusão

– Deveria funcionar em um cenário normal

– Deveria dar erro caso estejam faltando dados

– …

• Exclusão

– Expectativa 1

– Expectativa 2

– …

√X

BDDbehaviour driven development

http://jasmine.github.io/

describe

itititit

o que eu estou testando

tem que se comportar assim

tem que se comportar assado

tem que fazer isso

tem que fazer aquilo

describe

itititit

o que eu estou testando

tem que se comportar assim

tem que se comportar assado

tem que fazer isso

tem que fazer aquilo

describe um caso especial

it tem que tomar cuidado

describe

itititit

o que eu estou testando

tem que se comportar assim

tem que se comportar assado

tem que fazer isso

tem que fazer aquilo

describe um caso especial

itexpect

tem que tomar cuidado

que alguma operação

toEqual ao resultado esperado

describe

itititit

o que eu estou testando

tem que se comportar assim

tem que se comportar assado

tem que fazer isso

tem que fazer aquilo

describe um caso especial

itexpect

tem que tomar cuidado

que alguma operação

toEqual ao resultado esperado

https://github.com/pivotal/jasmine/wiki/Matchers

DSLdomain driven language

Dado que Alguma circunstânciaQuando alguma coisa acontecerEntão é esperado que algo aconteça

Given Alguma circunstânciaWhen alguma coisa acontecerThen é esperado que algo aconteça

http://martinfowler.com/bliki/GivenWhenThen.html

https://github.com/cucumber/cucumber/wiki/Given-When-Then

Given I am not logged inWhen I log in as Liz with a password JBehaverThen I should see a message, “Welcome, Liz!”

Given "the number 5"

When "all prime numbers less than it are requested"

Then "it should return [1,2,3,5] as a result"

http://jbehave.org/

Narrative:As a UsuarioI want Preencher um pedidoSo that Finalizar uma venda

Scenario: Verificar o saldo de produtosGiven O estoque tem 10 produtosWhen Eu verifico que há a disponibilidade para vender 5 produtosThen Deve retornar “true”

Scenario: Pedido preenchido com sucessoGiven O estoque tem 10 produtosWhen Eu preencho um pedido com 3 produtosThen Deve ser retornado que o status de preenchimento do pedido é “true”

$ npm install cucumber

(node:37359) fs: re-evaluating native module sources is not supported. If you are using the graceful-fs module, please update it to a more recent version. node-labs@1.0.0 /Users/alegomes/GDrive/2016/unb/cic/mpca/Construção de Software/slides/NodeJS/_ └─┬ cucumber@1.0.0 ├── base-64@0.1.0 ├── callsite@1.0.0 ├─┬ camel-case@1.2.2 │ ├─┬ sentence-case@1.1.3 │ │ └── lower-case@1.1.3 │ └── upper-case@1.1.3 ├─┬ cli-table@0.3.1 │ └── colors@1.0.3 ├── co@4.6.0 ├── colors@1.1.2 ├─┬ commander@2.9.0 │ └── graceful-readlink@1.0.1 ├── cucumber-html@0.2.3 ├─┬ duration@0.2.0 │ ├── d@0.1.1 │ └─┬ es5-ext@0.10.11 │ ├── es6-iterator@2.0.0 │ └── es6-symbol@3.0.2 ├── gherkin@4.0.0 ├─┬ glob@7.0.5 │ ├── fs.realpath@1.0.0 │ ├─┬ inflight@1.0.5 │ │ └── wrappy@1.0.2 │ ├─┬ minimatch@3.0.2 │ │ └─┬ brace-expansion@1.1.5 │ │ ├── balanced-match@0.4.1 │ │ └── concat-map@0.0.1 │ ├── once@1.3.3 │ └── path-is-absolute@1.0.0 ├── is-generator@1.0.3 ├── lodash@4.13.1 └── stack-chain@1.3.7

$ cucumber.js

$ cucumber.js

P&Raprender.unb.br