Bom dia / Boa tarde / Boa noite,
Post para auxiliar na resolução do "bug" no método "TestaExcecaoConsultaPorAgenciaPorId()".
Ao executar o método "TestaExcecaoConsultaPorAgenciaPorId()" eu não estava recebendo nenhuma exceção:
[Fact]
public void TestaExcecaoConsultaPorAgenciaPorId()
{
//Act
//Assert
Assert.Throws<FormatException>(
() => _repositorio.ObterPorId(33)
);
}
Realizei uma pequena investigação e percebi que no método "ObterPorId()" na classe "AgenciaRepositorio" retornava um valor nulo e não chegava a lançar uma FormatException:
public Agencia ObterPorId(int id)
{
try
{
var agencia = _contexto.Agencias.FirstOrDefault(p => p.Id == id);
if(agencia == null)
{
return null;
}
return agencia;
}
catch (Exception ex)
{
throw new Exception($"Erro ao obter agência com Id = {id}.") ;
}
}
Alterei o mesmo para que não retornasse mais um "null" e sim uma FormatException. Também foi necessário adicionar um novo bloco try-catch para que capturasse a exceção e a lançasse novamente (fiz isso pois se retornasse "null", o 'erro' persistiria). Ficou assim:
public Agencia ObterPorId(int id)
{
try
{
var agencia = _contexto.Agencias.FirstOrDefault(p => p.Id == id);
if(agencia == null)
{
//return null;
throw new FormatException($"Erro ao obter a agência informado com o ID = {id}");
}
return agencia;
}
catch (FormatException ex0)
{
throw new FormatException($"Erro ao obter a agência informado com o ID = {id}");
}
catch (Exception ex1)
{
throw new Exception($"Erro ao obter agência com Id = {id}.") ;
}
}
Após esse ajuste o teste começou a retornar o resultado esperado (uma FormatException). Espero que este post tenha auxiliado alguém com este mesmo erro.