Jeferson,
Pelo que eu entendi, o teste apresentará erro se você NÃO tiver o código "3" dentro do seu banco de dados para remoção.
Então você precisa colocar uma agência Id "3" para poder apagá-la... exemplo:
USE bytebankbd;
SELECT *
FROM agencia;
INSERT INTO `bytebankbd`.`agencia`
(`Id`,
`Numero`,
`Nome`,
`Endereco`,
`Identificador`)
VALUES
(3, '125982', 'Agência Guarapari', 'Rua: 7 de Setembro - Centro', 'b4334055-4fb6-4006-801a-7441aa7fced2');
Coloquei um comentário para NÃO esquecer de olhar na Base de Dados se existe o código "3":
/// <summary>
/// É preciso existir a agência ID "3" no Banco de Dados!
/// </summary>
[Fact]
[Trait("ID", "3")]
public void TestaRemoverInformacoaDeterminadaAgenceia()
{
//Arrange
//ACT
var atualizado = _repositorio.Excluir(3);
//Assert
Assert.True(atualizado);
}
Agora sobre o Throw... Meu código-fonte:
#region EXCEÇÕES
/// <summary>
/// Não pode existir o ID 33 no Banco de Dados.
/// </summary>
[Fact(DisplayName = "TestaExcecaoConsultaPorAgenciaPorId",
Skip = "Teste com problemas.")]
[Trait("ID", "33")]
public void TestaExcecaoConsultaPorAgenciaPorId()
{
//ARRANGE
//ACT
//ASSERT
Assert.Throws<FormatException>(
() => _repositorio.ObterPorId(33));
}
#endregion
... eu também fiquei na dúvida, pois NÃO consegui o retorno. MAS ESPERE UM POUCO...
... ESTRANHO... a função "ObterPorId"...
public Agencia ObterPorId(int id)
{
try
{
var agencia = _contexto.Agencias.FirstOrDefault(p => p.Id == id);
if(agencia == null)
{
return null;
}
return agencia;
}
catch
{
throw new Exception($"Erro ao obter agência com Id = {id}.") ;
}
}
... NÃO CAI NO THROW, mas cai no "return null;"... ?!? Então retorna NULO ... É esta a função certa para testar?!?
Por favor, Jeferson, experimente fazer colocando um break-point no "var agencia = ... " e fazendo o 'Gerenciado de Testes' rodar depurando (CTRL+R, CTRL+T). Veja se você consegue fazer a função cair no throw...
Recebi esta mensagem do 'Gerenciador de Testes':
Alura.ByteBank.Infraestrutura.Testes.AgenciaRepositorioTestes.TestaExcecaoConsultaPorAgenciaPorId
Fonte: AgenciaRepositorioTestes.cs linha 99
Duração: 3 ms
Mensagem:
Assert.Throws() Failure
Expected: typeof(System.FormatException)
Actual: (No exception was thrown)
Rastreamento de Pilha:
AgenciaRepositorioTestes.TestaExcecaoConsultaPorAgenciaPorId() linha 102
RuntimeMethodHandle.InvokeMethod(Object target, Void** arguments, Signature sig, Boolean isConstructor)
MethodInvoker.Invoke(Object obj, IntPtr* args, BindingFlags invokeAttr)
(No exception was thrown) = (Nenhuma exceção foi lançada)
Acho que esse teste está meio 'furado'... sei lá...
[]'s,
Fabio I.