Il metodo originale è ancora chiamato quando tento di usare Moq. Ecco il mio codice:Installazione Moq non funzionante, il metodo originale è ancora chiamato
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;
Più avanti nel codice, betRepository.UpdateBet(bet)
si chiama, ma la sua non il mio metodo preso in giro che viene chiamato, invece, il metodo della classe viene chiamato:
public virtual Bet UpdateBet(Bet betToUpdate)
{
siteContext.Entry(betToUpdate).State = System.Data.EntityState.Modified;
siteContext.SaveChanges();
return betToUpdate;
}
Perché questo accada ?
Stai utilizzando lo stesso riferimento quando imposti il metodo come quando viene effettivamente chiamato? È così che spiegherebbe il comportamento che stavi vedendo, dato che Moq può essere utilizzato per verificare che siano stati utilizzati valori specifici durante la verifica. Per i tipi di riferimento, sarebbero istanze specifiche del tuo oggetto. – Andy
Sì, probabilmente lo era. Non sapevo che i mock erano così esclusivi ed espliciti. – ErikTJ