2016-12-13 5 views
-1

In meinem Projekt haben wir ein Repository von Testdaten, die für Integrationstests verwendet wird. Dieses Repository wird dann verwendet, um eine Schein-Arbeitseinheit zu erstellen, auf die durch zu testende Methoden zugegriffen werden kann. Ich habe ein Problem beim Zugriff auf die Assert-Funktion.Zugriff auf private Mitglieder von Mocked-Objekt

Die Daten Ich mag würde innerhalb source

enter image description here

Ich suche Mitglieder in den Zugriff auf nicht-öffentliche Reflexion verwendet haben, statt behaupten aber die folgenden Renditen null:

PropertyInfo pInfo = vms.GetType().GetProperty("SourceInterface", BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance);

Ersetzen SourceInterface mit source gibt auch Null

zurück

Gibt es eine Möglichkeit, die SourceInterface Objekte von source abrufen?

EDIT: Testmethode:

[TestMethod] 
public void GetAllVMS_VMSReturned() 
{ 
    IEnumerable<SourceInterface> vms = controller.GetAllVMS(); 
    Assert.IsTrue(vms.ToList().Count > 0); //Throws NullReferenceException 
} 

Methode im Test:

public IEnumerable<SourceInterface> GetAllVMS() 
{ 
    return database.SourceInterfacesRepository.GetAll(); 
} 
+0

Ich werde meine Methode unter Test zusammen mit dem Testanruf zu – Novastorm

+1

hinzufügen Basierend auf Codebeispiel 'vms' ist IEnumerable ... Es macht absolut keinen Sinn, einige benutzerdefinierte Methoden darauf zu erwarten. Wahrscheinlich schlechte Kopie-Paste - stellen Sie sicher, dass Sie [MCVE] zur Verfügung stellen, die plausibel aussieht. –

+0

Es gibt wirklich nichts mehr zu der Frage hinzuzufügen; Die einzige andere Information, die ich möglicherweise liefern könnte, wäre die Einrichtung unserer Arbeitseinheit (in diesem Beispiel: Datenbank), die vor dem Test injiziert wurde. – Novastorm

Antwort

1

source ist keine Eigenschaft, sondern ein Feld. Tun Sie dies:

FieldInfo[] privateFields = vms.GetType().GetFields(BindingFlags.NonPublic | BindingFlags.Instance); 

Sie können dann auswählen, die privateFields basierend auf, was Sie brauchen.

+0

Vielen Dank! Ich konnte nach dem Hinzufügen Zugriff auf die Felder bekommen – Novastorm

Verwandte Themen