Oryginalna metoda, którą wciąż wywoływano, gdy próbuję użyć Moq. Tu jest mój kodu:Konfiguracja Moq nie działa, oryginalna metoda jest nadal nazywana
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;
Później w kodzie, betRepository.UpdateBet(bet)
nazywa, ale to nie moja szydzili metoda, która jest wywoływana, natomiast metoda klasy jest wywoływana:
public virtual Bet UpdateBet(Bet betToUpdate)
{
siteContext.Entry(betToUpdate).State = System.Data.EntityState.Modified;
siteContext.SaveChanges();
return betToUpdate;
}
Dlaczego to się dzieje ?
Czy używasz tego samego odniesienia podczas konfigurowania metody tak, jak robisz to, gdy jest ona wywoływana? Jest tak, aby wyjaśnić zachowanie, które widziałeś, ponieważ Moq może być użyty do przetestowania, które wartości zostały użyte podczas weryfikacji. W przypadku typów odniesienia byłyby to konkretne instancje obiektu. – Andy
Tak, to było prawdopodobnie to. Nie wiedziałem, że makiety są tak ekskluzywne i jednoznaczne. – ErikTJ