Testes | C#
Cuidados
//Supondo que no ObterClientePorEmailAsync() esteja sendo passado ao invés de "" um valor qualquer como "adolfo@email.com", como no mock está sendo passado "" e na execução está passando outro valor, irá ser retornado null ao invés do result informado. O valor passado por parâmetro deve ser o mesmo que será passado na execução ("Debug test")
_clienteRepository.Setup(x => x.ObterClientePorEmailAsync("")).Returns(Task.FromResult(resultPorEmail));
//O Moq usa a igualdade de referência por padrão, ou seja, ele espera que seja exatamente a mesma instância.
Passando uma classe por objeto
// Vai dar erro por ser uma referência diferente do que vai ser passada quando executar
_bluedeskAuthAmigoContadorRepository.Setup(x => x.RenomearUsuarioAsync(new BluedeskAuthUser(primeiroAcessoDto.Nome, primeiroAcessoDto.EmailResponsavel))).Returns(Task.FromResult(resultBluedesk));
// Correto
_bluedeskAuthAmigoContadorRepository
.Setup(x => x.RenomearUsuarioAsync(It.Is<BluedeskAuthUser>(u => u.Nome == primeiroAcessoDto.Nome && u.Email == primeiroAcessoDto.EmailResponsavel)))
.Returns(Task.FromResult(resultBluedesk));
Assert.Inconclusive
