Falta pouco!

0 dias

0 horas

0 min

0 seg

1
resposta

Erro nos teste da classe helpTest

Segue a minha classe.

using Alura.Adopet.Console.Comandos;

namespace Alura.Adopet.Testes;

public class HelpTest
{
    [Fact]
    public async Task QuandoComandoNaoExistirDeveRetornarFalha()
    {
        //Arrange
        var comando = "Inválido";
        var help = new Help(comando);
        //Act
        var resultado = await help.ExecutaAsync();
        //Assert
        Assert.NotNull(resultado);
        Assert.True(resultado.IsFailed);
    }

    // Theory para testar vários comandos existentes, ou seja, os comando que possuem documentação
    [Theory]
    [InlineData("help")]
    [InlineData("show")]
    [InlineData("list")]
    [InlineData("import")]
    public async Task QuandoComandoExistirDeveRetornarSucesso(string comando)
    {

        //Arrange   
        var help = new Help(comando);
        //Act
        var resultado = await help.ExecutaAsync();
        //Assert
        Assert.NotNull(resultado);
        Assert.True(resultado.IsSuccess);
    }
}
1 resposta

Olá Igor! Tudo bem?

Pelo que você descreveu, você já está no caminho certo, mas vamos verificar alguns pontos que podem estar causando o erro nos seus testes.

  1. Verifique o Método ExecutaAsync: Certifique-se de que o método ExecutaAsync da classe Help está implementado corretamente para retornar um resultado com IsFailed quando o comando não existir e IsSuccess quando o comando existir. Parece que a lógica dentro do método pode não estar tratando corretamente os comandos inválidos.

  2. Tratamento de Exceções: No contexto que você forneceu, há uma menção de que é necessário lançar uma exceção (throw new ArgumentException()) quando o comando não for encontrado. Verifique se essa lógica está implementada no método ExecutaAsync.

  3. Consistência nos Nomes dos Métodos: Notei que há uma pequena diferença no nome do método ExecutarAsync mencionado no contexto e ExecutaAsync que você usou no seu código. Certifique-se de que o nome do método está correto e consistente em todo o seu código.

  4. Teste com Comandos Válidos: Para os testes que verificam comandos válidos, assegure-se de que a documentação para esses comandos está realmente disponível e que o método ExecutaAsync está retornando IsSuccess corretamente.

Aqui está um exemplo de como você pode verificar a implementação do método ExecutaAsync:

public class Help
{
    private string comando;

    public Help(string comando)
    {
        this.comando = comando;
    }

    public async Task<Resultado> ExecutaAsync()
    {
        var resultado = new Resultado();

        // Simulação de lógica para verificar se o comando existe
        if (comando == "help" || comando == "show" || comando == "list" || comando == "import")
        {
            resultado.IsSuccess = true;
        }
        else
        {
            resultado.IsFailed = true;
            resultado.Mensagem = "Comando não encontrado!";
            throw new ArgumentException("Comando inválido");
        }

        return await Task.FromResult(resultado);
    }
}

public class Resultado
{
    public bool IsSuccess { get; set; }
    public bool IsFailed { get; set; }
    public string Mensagem { get; set; }
}

Espero que essas dicas ajudem a resolver o problema com seus testes.

Bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.