2016-07-26 28 views
6

Also muss ich einen Komponententest für meine Daten abrufen, das Objekt, das ich bekommen möchte, ist ziemlich groß. Ich habe Repositories mit "GetbyId" (in dort haben wir das Abrufen des Datenobjekts und der Zuordnung). habe ich herausgefunden, es wäre besser 2 Unit-Tests zu erstellen:C# Unit Test: Daten aus dem Repository abrufen

  1. des Datenobjekts abrufen
  2. Mapping zu meinem Modell

Wir haben bereits einige Testbeispiele erstellt und ich bin Überprüfung der Entities mit gespeicherten Xmls der Test-Entity, also sind wir ziemlich flexibel. Mein Problem ist mit dem Mapping, da mein Model einige Schnittstellen hat Ich kann es nicht serialisieren und ich möchte nicht jede Beispiellösung fest codieren (weil sie auch ziemlich viel sind)

Hat jemand eine Idee wie Ich kann den Mapper besser testen?

Ps: Ich weiß, ich bin ziemlich meisterhaft, Dinge schlecht zu erklären, sorry dafür.

EDIT:

Hier ein Beispiel: Da IContact in Person ist, kann ich es nicht serialisiert werden, so kann ich nicht wissen, wie es zu überprüfen, leicht (dieses Modell ein Beispiel ist die reale etwa 200 Zeilen groß ist ohne Zählen der untergeordneten Zeilen von den Schnittstellen)

public Person: IPerson 
{ 
    public Name {get; set;} 
    public IContact {get; set;} 
} 

public Contact: IContact 
{ 
    public Phone {get; set;} 
} 
+2

Können Sie bitte ein paar Schnipsel Ihrer Modellklasse und der Repository-Klasse hinzufügen? Ist einfacher zu denken :) –

+0

Ich verwende fast immer Json.NET und JSON Format anstelle von XML, es ist viel flexibler und auch einfacher zu lesen (was nicht schlecht ist, wenn es um das Testen geht). –

+0

so ist die Frage, wie erwartetes Objekt mit tatsächlichen vergleichen? –

Antwort

0

Normalerweise verwende ich Compare.net für solche Fälle:

//arrange: 
var expected = new Person{ Name = "Alice", Contact = new Contact(){Phone = ""}}; 
CompareLogic compareLogic = new CompareLogic(); 

//act: 
var result = target.GetbyId(1); 

//assert: 
Assert.IsTrue(compareLogic.Compare(expected, result).AreEqual); 

Eine weitere Option istzu verwenden(für eine vollständige Offenlegung habe ich keine Erfahrung mit diesem Tool ...)

Eine weitere Option besteht darin, eine Hilfsmethode für die Geltendmachung zu erstellen, dann wieder in jedem Test zu verwenden.