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.