El método original todavía se llama cuando trato de usar Moq. Aquí está mi código:Moq Setup no funciona, el método original todavía se llama
var mockedBetRepository = new Mock<BetRepository>(new FakeSiteContext());
mockedBetRepository.CallBase = true;
Bet bet = new Bet();
mockedBetRepository.Setup<Bet>(m => m.UpdateBet(bet)).Returns(bet);
betRepository = mockedBetRepository.Object;
Más adelante en el código, betRepository.UpdateBet(bet)
se llama, pero no es mi método burlado, que es llamada, en cambio, el método de la clase se llama:
public virtual Bet UpdateBet(Bet betToUpdate)
{
siteContext.Entry(betToUpdate).State = System.Data.EntityState.Modified;
siteContext.SaveChanges();
return betToUpdate;
}
¿Por qué sucede esto ?
¿Está utilizando la misma referencia cuando configura el método que cuando lo llama realmente? Es así que eso explicaría el comportamiento que estaba viendo, ya que Moq puede usarse para probar que se usaron valores específicos al verificar. Para tipos de referencia, eso sería instancias específicas de su objeto. – Andy
Sí, eso fue probablemente. No sabía que los simulacros eran tan exclusivos y explícitos. – ErikTJ