var storageManager = new Mock<IStorageManager>();
storageManager.Setup(e => e.Add(It.IsAny<UserMetaData>()));
Die Add () -Methode erwartet ein UserMetaData-Objekt mit einer FirstName-Eigenschaft.
Ich möchte sicherstellen, dass ein Objekt vom Typ UserMetaData mit dem Vornamen "Vorname1" übergeben wurde.
Sie können Verify
verwenden.
Beispiele:
Stellen Sie sicher, dass Add
nie mit UserMetaData
mit FirstName
! = "FirstName1"
Aufgerufen wurde:
storageManager.Verify(e => e.Add(It.Is<UserMetaData>(d => d.FirstName!="FirstName1")), Times.Never());
Stellen Sie sicher, dass Add
mindestens einmal mit einem UserMetaData
mit FirstName
== "FirstName1"
Aufgerufen wurde:
storageManager.Verify(e => e.Add(It.Is<UserMetaData>(d => d.FirstName=="FirstName1")), Times.AtLeastOnce());
Stellen Sie sicher, dass Add
genau einmal mit FirstName
== "Firstname1"
Und LastName
== "LastName2"
Aufgerufen wurde:
storageManager.Setup(e => e.Add(It.Is<UserMetaData>(data => data.FirstName == "FirstName1"
&& data.LastName == "LastName2")));
...
storageManager.VerifyAll();
Sie können die It.Is-Methode verwenden:
storageManager.Setup(e => e.Add(It.Is<UserMetaData>(data => data.FirstName == "FirstName1")));
Dominic Kexels Methode ist gut und wird funktionieren. Sie können aber auch einen Rückruf verwenden, was nützlich ist, wenn Sie die Ausgabe auf komplizierte Weise überprüfen müssen.
UserMetaData parameter = null;
var storageManager = new Mock<IStorageManager>();
storageManager
.Setup(e => e.Add(It.IsAny<UserMetaData>()))
.Callback((UserMetaData metaData) => parameter = metaData);
Assert.That(parameter.FirstName, Is.EqualTo("FirstName1")); //If using fluent NUnit
Dies hat den Vorteil, dass Sie den Parameter bei Bedarf viel häufiger überprüfen können, als nur zu überprüfen, ob es sich um "Vorname1" handelt.
Der Nachteil ist, dass bei mehrmaligem Aufruf von Add nur der beim letzten Aufruf übergebene Parameter überprüft wird (obwohl Sie zusätzlich überprüfen können, ob er einmal aufgerufen wurde).
Dominics Antwort ist für Ihre genaue Situation besser als meine, aber ich wollte auf Callback für andere ähnliche Situationen hinweisen.