`
linguagem` `
topico` `
nome`TDD  validação Cpf javascript`
` `
titulo`TDD validação Cpf javascript`
` `
descritor`apoie, apoie.org, PAM, mutirão, produzir, aprender, simplificar, inovar, pesquisar , TDD`
` `
lead`Exemplo de um TDD - desenvolvimento de programa dirigido por teste. 
` `
melhorar`Melhorar`
` `
referenciaLivro TDD Kent Beck
Simulador python,js,java
Documento de trabalho
`
` `
origem`TddCpfJs.xml`
` `
` `
topico` `
titulo`O problema`
` `
desc` Validar o CPF
`
` `
` `
topico` `
titulo`Teste do programa- se CPF Possui 11 digitios`
` `
desc`
/*execução dos testes */
console.log ("Início da execução de testes:");

if(!ValidaCpf(1234567890)){
        console.log('resultado esperado ValidaCpf(1234567890)=false', 'resultado obtido:', ValidaCpf(1234567890))
    }

console.log("Fim dos testes");

Resultado do teste de execução
Início da execução de testes:
ReferenceError: ValidaCpf is not defined

`
` `
` `
topico` `
titulo`Alterar programa para teste funcionar`
` `
desc`
/*definição da função*/
function ValidaCpf(pCpf) {
   
    //Testo de o CPF Possui 11 digitios
    if (pCpf.length!=11){
        return true;
    }
}


/*execução do teste*/
    console.log ("Início da execução de testes:");
  
    if(!ValidaCpf(1234567890)==false){
            console.log('resultado esperado ValidaCpf(1234567890)=false', 'resultado obtido:', ValidaCpf(1234567890))
        }
    console.log("Fim dos testes");


Resultado do teste de execução
Início da execução de testes:
Fim dos testes

`
` `
` `
topico` `
titulo`Adicionar teste`
` `
desc`
/*execução dos testes*/
/*definição da função */
function ValidaCpf(pCpf) {
     
        //Testo de o CPF Possui 11 digitios
        if (pCpf.length!=11){
            return false;
       }
    }
  
   /*execução do teste*/
    console.log ("Início da execução de testes:");

    if(!ValidaCpf(1234)==false){
            console.log('resultado esperado ValidaCpf(1234)=false', 'resultado obtido:', ValidaCpf(1234))
        }
    console.log("Fim dos testes");



Resultado do teste de execução
Início da execução de testes:
Fim dos testes

`
` `
` `
topico` `
titulo`Adicionar função`
` `
desc`
/*definição da função*/
*definição da função */
function ValidaCpf(pCpf) {
     
        //Testo de o CPF Possui 11 digitios
        if (pCpf.length!=11){
            return false;
       }
      //testo se é um número de CPF inválido
      for (var i=00000000000; i<=99999999999; i=i+11111111111){       
          if(pCpf == i){
              return false;
        }
         
    }
  
   /*execução do teste*/
    console.log ("Início da execução de testes:");

    if(!ValidaCpf(12345678901)==false){
            console.log('resultado esperado ValidaCpf(1234)=false', 'resultado obtido:', ValidaCpf(12345678901))
        }
    console.log("Fim dos testes");


Resultado do teste de execução
Início da execução de testes:
Fim dos testes

`
` `
` `
topico` `
titulo`Dicas`
` `
desc`
Sequência do TDD - sempre começa pelo teste

Repetir enquanto necessário:
  1. Adicionar teste (deve dar erro!)
  2. Alterar programa para teste funcionar (com o minimo de código)
  3. Refatorar programa ou teste (melhorar compreensão, tirar duplicatas, simplificar)

`
` `
` `
`