public static void Main()
Console.WriteLine("Hello World");
Mock<IBancoDeDados> mockBancoDeDados = new Mock<IBancoDeDados>();
.Setup(s => s.ObterUsuario(It.IsAny<string>()))
.Returns(null as Usuario);
var resposta = AutenticarUsuario("login", "senha", mockBancoDeDados.Object);
if (resposta != false) throw new Exception("Era esperado null!");
.Setup(s => s.ObterUsuario(It.IsAny<string>()))
.Returns(new Usuario { Senha = "alguma" });
var resposta2 = AutenticarUsuario("login", "senha", mockBancoDeDados.Object);
if (resposta2 != false) throw new Exception("Era esperado null, pois a senha não confere!");
.Setup(s => s.ObterUsuario(It.IsAny<string>()))
.Returns(new Usuario { Senha = "senha" });
var resposta3 = AutenticarUsuario("login", "senha", mockBancoDeDados.Object);
if (resposta3 != true) throw new Exception("Era esperado o usuário!");
Console.WriteLine("Fim dos testes");
public static bool AutenticarUsuario(string usuario, string senha, IBancoDeDados bd)
Usuario usr = bd.ObterUsuario(usuario);
return usr != null && usr.Senha == senha;
public interface IBancoDeDados
Usuario ObterUsuario(string nome);
public interface IBancoDeDados
Usuario ObterUsuario(string nome);
public class BancoDeDados : IBancoDeDados
public Usuario ObterUsuario(string nome)
throw new NotImplementedException();
public string Nome {get;set;}
public string Senha {get;set;}