Skip to content

Instantly share code, notes, and snippets.

@joaovictorino
Last active January 19, 2024 02:18
Show Gist options
  • Save joaovictorino/732145f92c4e3a5164a74d23a6e5c104 to your computer and use it in GitHub Desktop.
Save joaovictorino/732145f92c4e3a5164a74d23a6e5c104 to your computer and use it in GitHub Desktop.
Número da conta com fluxos alternativos

Número da conta com fluxos alternativos

Precisamos criar outros testes para garantir que a aplicação está funcionando corretamente.
Portanto crie o teste abaixo no arquivo NumeroConta.test.ts

test("conta com cinco dígitos", async () => {
  expect(() => { new NumeroConta("23456"); }).toThrow("número de conta inválida");
});

Agora rode os testes

npx jest

Vamos então alterar o construtor da classe para a nova funcionalidade. Altere o código da classe número conta conforme abaixo

public constructor(numero: string) {
    if(numero.length < 6)
        throw new NegocioErro("número de conta inválida");
    this._numero = numero;
}

Agora precisamos testar se a classe aceita mais que seis digitos na conta, portanto crie o teste abaixo

test("conta com sete dígitos", async () => {
  expect(() => { new NumeroConta("1234567"); }).toThrow("número de conta inválida");
});

Agora rode os testes

npx jest

Agora vamos melhorar nosso construtor, conforme código abaixo

public constructor(numero: string) {
    if(numero.length < 6
        || numero.length > 6)
        throw new NegocioErro("número de conta inválida");
    this._numero = numero;
}

Agora rode os testes

npx jest

Tudo funcionando. Porém a variável que recebe o número da conta é do tipo string, logo pode receber valores que não sejam digitos, precisamos testar esta possibilidade.
Crie o teste abaixo

test("conta com valor que não sejam digitos", async () => {
  expect(() => { new NumeroConta("abc123"); }).toThrow("número de conta inválida");
});

Agora rode os testes

npx jest

Precisamos melhorar nossa classe e seu construtor, portanto crie o método de validação na classe e substitua o construtor, conforme abaixo

public constructor(numero: string) {
    this.validar(numero);
    this._numero = numero;
}

private validar(numero: string): void {
    if(!this.temSeisDigitos(numero)) {
        throw new NegocioErro("número de conta inválida");
    }
}

private temSeisDigitos(numero: string): boolean {
    const regExp: RegExp = /^\d{6}$/;
    return regExp.test(numero);
}

Agora rode os testes

npx jest

Embora nosso código seja muito simples. Perceba que nem precisamos debugar o código para avaliar sua situação, pois os testes estão nos ajudando nisso.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment