moq
Spottendes Verhalten
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