Szukaj…


Składnia

  • mock.Setup (wyrażenie) .Returns (wartość) // Za każdym razem, gdy wywołana metoda w wyrażeniu zwróci wartość

Parametry

Parametr Detale
wyrażenie Wyrażenie Lambda, które określa wywołanie metody.

Wyśmiewanie metody bez argumentu

interface Mockable {
    bool DoSomething();
}

var mock = new Mock<Mockable>();
mock.Setup(x => x.DoSomething()).Returns(true);

var result = mock.Object.DoSomething(); //true

Kpiny z nieważnych metod w celu potwierdzenia zwrotu

var logRepository = new Mock<ILogRepository>();
logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
  .Verifiable();

W takim przypadku używamy opcji Weryfikowalne, aby zapewnić jej działanie.

Możemy również użyć oddzwonienia tutaj:

logRepository.Setup(x => x.Write(It.IsAny<Exception>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<string>()))
     .Callback<Exception, string, string, string, string, string>((ex, caller, user, machine, source, message) => { Console.WriteLine(message); });

spowoduje to zapisanie danych wyjściowych z metody na standardowe dane wyjściowe w konsoli (wiele środowisk testowych pozwala przechwycić dane wyjściowe do ich programu uruchamiającego)

Szydząc z chronionych członków

Aby wyśmiewać chronionego członka, musisz najpierw umieścić następujące elementy na górze urządzenia testowego:

using Moq.Protected;

Następnie wywołujesz Protected() na swoim makiecie, po czym możesz użyć ogólnego Setup<> z typem zwracanej metody.

var mock = new Mock<MyClass>();
mock.Protected()
     .Setup<int>("MyProtectedGetIntMethod")
     .Returns(1);

Jeśli metoda zwróci wartość void, użyj nietypowej funkcji Setup() .



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow