2
respostas

Não entendi de onde ele tira o args[1] no LeitorDeArquivo

Dá onde vem o args do program?

var leitorDeArquivos = new LeitorDeArquivo(caminhoDoArquivoASerLido: args[1]);

No meu está dando um erro que não era pra dar

private readonly LeitorDeArquivo _leitorDeArquivo = new LeitorDeArquivo("");

GitHub: https://github.com/IgorTudisco/Boas_Praticas-CSharp

2 respostas

Segue o meu teste:


using Alura.Adopet.Console.Comandos;
using Alura.Adopet.Console.Modelos;
using Alura.Adopet.Console.Servicos;
using Alura.Adopet.Console.Util;
using Moq;
using System.Threading.Tasks;

namespace Alura.Adopet.Testes;

public class ImportTeste
{
    [Fact]
    public async Task QuandoApiEstaNoArDeveRetornarListaDePet()
    {
        var leitorDeArquivo = new Mock<LeitorDeArquivo>(MockBehavior.Default, It.IsAny<string>());
        var listaDePets = new List<Pet>();
        var pet = new Pet(new Guid("456b24f4-19e2-4423-845d-4a80e8854a41"), "Lima", TipoPet.Cachorro);
        listaDePets.Add(pet);

        leitorDeArquivo.Setup(x => x.RealizaLeitura("")).Returns(listaDePets);

        var httpClientPet = new HttpClientPet(new AdopetAPIClientFactory().GetHttpClient());
        var import = new Import(httpClientPet, leitorDeArquivo.Object);
        string[] args = { "import", "lista.csv" };
        //Act
        await import.ExecutaAsync(args);
        //Assert 
        var listaPet = await httpClientPet.ListPetsAsync();
        Assert.NotNull(listaPet);

    }
}

Oi Igor! Como vai?

O args que você está vendo no código é um array de strings que contém os argumentos passados para o programa quando ele é executado. Quando você executa um programa C# a partir da linha de comando, você pode passar argumentos para ele, e esses argumentos são acessados dentro do programa através do array args.

Por exemplo, se você executar seu programa com o comando:

dotnet run import lista.csv

O array args conterá dois elementos:

  • args[0] será "import"
  • args[1] será "lista.csv"

No seu caso, o erro pode estar ocorrendo porque você não está passando argumentos suficientes ao executar o programa. Se você tentar acessar args[1] sem que ele tenha sido fornecido, o programa lançará uma exceção.

Para corrigir isso, certifique-se de que está passando os argumentos corretamente ao executar o programa. Se você está rodando o programa em um ambiente de desenvolvimento, como o Visual Studio, você pode configurar os argumentos de linha de comando nas propriedades do projeto.

Espero ter ajudado e bons estudos!

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