Ricerca…


Sintassi

  • mock.Setup (espressione) .Returns (valore) // Ogni volta che viene chiamato il metodo nell'espressione restituirà il valore

Parametri

Parametro Dettagli
espressione Espressione Lambda che specifica l'invocazione del metodo.

Mocking del metodo No-Argument

interface Mockable {
    bool DoSomething();
}

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

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

Metodi vuoti di derisione per confermare cosa restituiscono

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();

In questo caso, stiamo utilizzando il verificabile per garantire che venga eseguito.

Potremmo anche usare una callback qui:

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); });

questo registrerebbe l'output dal metodo allo standard output sulla console (molti framework di test consentono di acquisire quell'output nel proprio runner)

Mocking membri protetti

Per deridere un membro protetto devi prima includere quanto segue nella parte superiore del dispositivo di prova:

using Moq.Protected;

Quindi chiami Protected() sul tuo mock, dopodiché puoi usare il Setup<> generico Setup<> con il tipo di ritorno del tuo metodo.

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

Se il metodo restituisce void, utilizzare l' Setup() non generica Setup() .



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow