Skip to content

Instantly share code, notes, and snippets.

@joaovictorino
Last active February 27, 2024 00:54
Show Gist options
  • Save joaovictorino/a5ae01b4d22765f7087d69e9dd536303 to your computer and use it in GitHub Desktop.
Save joaovictorino/a5ae01b4d22765f7087d69e9dd536303 to your computer and use it in GitHub Desktop.
Saques não podem ser zerados

Saques não podem ser zerados

Precisamos implementar uma condição de segurança no código que não permita o saque de valores zerados ou inválidos, crie um novo teste, na classe conta teste, que valide isso, conforme código abaixo

test("sacar com valor zerado", async () => {
  const conta: Conta = new Conta("123456", 5000.0);
  expect(() => { conta.sacar(0); }).toThrow("valor não pode ser igual ou menor que zero");
});

Vamos rodar os testes e ver que precisamos implementar esta validação

npx jest

Vamos primeiramente criar um erro personalizado de negócio. Na pasta "src", crie a pasta "error" e crie o arquivo "NegocioErro.ts" com o conteúdo abaixo

export class NegocioErro extends Error {
    constructor(message: string) {
      super(message);
  
      Object.setPrototypeOf(this, NegocioErro.prototype);
    }
}

Então altere o método de saque conforme abaixo, mas não esqueça de importar a classe NegocioErro para dentro da Conta

public sacar(valor: number): void {
  if(valor == 0)
    throw new NegocioErro("valor não pode ser igual ou menor que zero");

  this._saldo -= valor;
}

Rode novamente os testes

npx jest

Tudo funcionando novamente.

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