Mockando Contexto em Serviço e Repositório
//Classe public class Carro{ public int Codigo {get; set; } public string Descricao { get; set; } }
//Contexto public class MeuContexto { public virtual DbSet<Carro> Carro { get; set; } }
//Repositório public class CarroRepositorio { public CarroRepositorio(MeuContexto contexto) : base (contexto) { } public virtual int NovoCodigo() { return context.Carro.Max(c => c.Codigo) += 1; } }
//Serviço public class CarroService { CarroRepositorio repCarro; public CarroService(MeuContexto context) : base(context) { repCarro = new CarroRepositorio(context) } public virtual Carro Buscar(int Id) { return repCarro.Listar().Where(model => model.Codigo == Id).FirstOrDefault(); } }
//Testes Com Repositorio que Funciona [TestMethod] public void RetornarProximaPlacaComRepositorio() { var _Carros = new List<Carro>{ new Carro() { Codigo = 1, Descricao = "Gol" }, new Carro() { Codigo = 2, Descricao = "Uno" } }.AsQueryable(); var DbSet = new Mock<DbSet<Carro>>(); DbSet.As<IQueryable<Carro>>().Setup(m => m.Provider).Returns(_Carros.Provider); DbSet.As<IQueryable<Carro>>().Setup(m => m.Expression).Returns(_Carros.Expression); DbSet.As<IQueryable<Carro>>().Setup(m => m.ElementType).Returns(_Carros.ElementType); DbSet.As<IQueryable<Carro>>().Setup(m => m.GetEnumerator()).Returns(_Carros.GetEnumerator()); var Contexto_Mocado = new Mock<MeuContexto>(); var repositorio = new CarroRepositorio(Contexto_Mocado.Object); var ProximoCodigo = repositorio.NovoCodigo(); var QuantidadeDeCarros = Contexto_Mocado.Object.Carro.ToList(); Assert.AreEqual(2, QuantidadeDeCarros.Count()); Assert.AreEqual(3, ProximoCodigo); } //Testes Com Serviço que não Funciona [TestMethod] public void BuscarCarroComServico() { var Contexto_Mocado = new Mock<GesCooperContext>(); var repositorio = new Mock<CarroRepositorio>(Contexto_Mocado); var servico = new Mock<CarroService>(repositorio.Object.context); var Retorno = servico.Object.Buscar(1); Assert.AreEqual("Gol", Retorno.FirstOrDefault); }
Nesse momento queria que o servico ficase com o repositorio mocado que funciona no primeiro teste
e então buscar no mesmo contexto sem precisar setar o Setup para o serviço
[ servico.Setup(s => s.Buscar(1)).Returns(new Carro { Codigo = 1, Descricao = "Gol"}); ]
Alguém sabe se é possível configurar alguma variavel do Mock para este objetivo?
Infogen Ltda
Curtidas 0