Ich habe eine Schnittstelle, die Mitglieder hat, ungefähr so:
public interface IDataLoader
{
//other stuff
// tools for loading the items to be processed from disk or cloud
CustomCollection ItemsToBeProcessed {get; set;}
}
Ich mache UTs für andere Komponenten des Systems, die diese verbrauchen, ItemsToBeProcessed
und ich möchte die Komplexität und Abhängigkeiten beim Laden vermeiden.
In jedem UT möchte ich die ItemsToBeProcessed mit bestimmten fest codierten Daten füllen. Führen Sie dann die Daten dem zu testenden Modul (dem Prozessormodul) zu und vergleichen Sie die Ausgabe mit bestimmten fest codierten erwarteten Daten.
Mein Problem ist, dass ich dies nicht initialisieren kann ItemsToBeProcessed
und nicht verstehe, warum.
Dies ist meine UT bisher:
[Test]
public void DataProcessor_TestData1_asExpected()
{
Mock<IDataLoader> mokedAmplifier = new Mock<IDataLoader>(MockBehavior.Loose);
MainController.Loader = mokedAmplifier.Object;
if(MainController.Loader.ItemsToBeProcessed == null)
MainController.Loader.ItemsToBeProcessed = new CustomCollection();
// here the MainController.Loader.ItemsToBeProcessed is still null.. why???
var TestData = LoadTestData("testData1.xml");
var ExpectedData = LoadExpectedData("ExpectedData1.xml")
MainConroller.Loader.ItemsToBeProcessed.AddRange(TestData);
var ProcessingModuleBeingTested = new ProcessingModule();
var results = ProcessingModuleBeingTested.Process(MainController.Loader.ItemsToBeProcessed);
Asert.isEqual(ExepctedData, results);
}
Wie initialisiere ich dieses Mitglied?
Verspotten Sie das gewünschte Mitglied, um beim Aufrufen ein verwendbares Objekt zurückzugeben.
var collection = new CustomCollection();
var mokedAmplifier = new Mock<IDataLoader>(MockBehavior.Loose);
mokedAmplifier.Setup(_ => _.ItemsToBeProcessed).Returns(collection);
//...
Wenn Sie möchten, dass sich der Mock an Änderungen an der Eigenschaft erinnert, verwenden Sie SetupAllProperties
Gibt an, dass alle Eigenschaften des Modells "Eigenschaftsverhalten" haben sollen. Wenn Sie also den Wert festlegen, wird es gespeichert und später zurückgegeben, wenn die Eigenschaft angefordert wird. (Dies wird auch als "Stubbing" bezeichnet). Der Standardwert für jede Eigenschaft ist der Wert, der gemäß der Eigenschaft Moq.Mock.DefaultValue für das Modell generiert wird.
var mokedAmplifier = new Mock<IDataLoader>(MockBehavior.Loose);
mokedAmplifier.SetupAllProperties(); //<--
MainController.Loader = mokedAmplifier.Object;
if(MainController.Loader.ItemsToBeProcessed == null)
MainController.Loader.ItemsToBeProcessed = new CustomCollection();
//...
Verweisen Sie auf Moq Quickstart , um Hilfe zum Verständnis des Mocking-Frameworks zu erhalten.
Dieser Artikel stammt aus dem Internet. Bitte geben Sie beim Nachdruck die Quelle an.
Bei Verstößen wenden Sie sich bitte [email protected] Löschen.
Lass mich ein paar Worte sagen