Phương thức ban đầu nó vẫn được gọi khi tôi cố gắng sử dụng Moq. Đây là mã của tôi:Cài đặt Moq không hoạt động, phương pháp gốc vẫn được gọi là
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;
Sau đó trong code, betRepository.UpdateBet(bet)
được gọi, nhưng không phải của phương pháp chế giễu của tôi mà được gọi là, thay vào đó, phương pháp của lớp được gọi là:
public virtual Bet UpdateBet(Bet betToUpdate)
{
siteContext.Entry(betToUpdate).State = System.Data.EntityState.Modified;
siteContext.SaveChanges();
return betToUpdate;
}
Tại sao nó xảy ra điều này ?
Bạn có sử dụng cùng một tham chiếu khi bạn thiết lập phương pháp như bạn thực hiện khi nó thực sự được gọi không? Là như vậy sẽ giải thích các hành vi bạn đã nhìn thấy, như Moq có thể được sử dụng để kiểm tra các giá trị cụ thể đã được sử dụng khi xác minh. Đối với các loại tham chiếu, đó sẽ là các trường hợp cụ thể của đối tượng của bạn. – Andy
Vâng, đó có lẽ là nó. Không biết các mocks đã rất độc quyền và rõ ràng. – ErikTJ