Suche…


Syntax

  • mock.Setup (expression) .Returns (value) // Bei jedem Aufruf der Methode im Ausdruck wird der Wert zurückgegeben

Parameter

Parameter Einzelheiten
Ausdruck Lambda-Ausdruck, der den Methodenaufruf angibt.

No-Argument-Verspottung

interface Mockable {
    bool DoSomething();
}

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

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

Spottende Methoden, um zu bestätigen, was sie zurückgeben

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 diesem Fall verwenden wir das Überprüfbare, um sicherzustellen, dass es ausgeführt wird.

Wir könnten hier auch einen Rückruf verwenden:

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

Dadurch würde die Ausgabe der Methode in der Standardausgabe auf der Konsole protokolliert (bei vielen Testframeworks können Sie diese Ausgabe in ihrem Läufer erfassen.

Verspottete geschützte Mitglieder

Um ein geschütztes Mitglied zu verspotten, müssen Sie zunächst Folgendes in Ihr Testgerät einfügen:

using Moq.Protected;

Sie rufen dann Protected() in Ihrem Mock auf. Danach können Sie das generische Setup<> mit dem Rückgabetyp Ihrer Methode verwenden.

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

Wenn die Methode void zurückgibt, verwenden Sie das nicht generische Setup() .



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow