2009-05-19 4 views
1

Wie teste ich Unit Code, der LTS DataContext hat. Ich bekomme Fehler beim Testen, ich habe viele Datenkontexte und manuell hinzufügen der Verbindungszeichenfolge ist ein Schmerz, irgendwelche Vorschläge.Testen von Linqto-SQL-Klassen

Antwort

1

Nun, die Art, wie ich es tun, ist wie folgt:

My Data Layer eine Schnittstelle hat, wie folgt:

public class MyDataLayer : iMyDataLayer 
{ 
    public string GetMyData(parameters) 
    { 
    return myQueryValue; 
    } 

} 

public interface iMyDataLayer 
{ 
    public string GetMyData(parameters); 
} 

Jetzt, in meinem Konstruktor für meine Haupt-Code-Basis (Business-Logik) ich werde einen Parameter haben in der Schnittstelle für die Datenschicht zu übergeben:

private iMyDataLayer DataLayer; 

public class MyBusinessLogic(iMyDataLayer dataLayer) 
{ 
    DataLayer = dayaLayer 
} 

public string GetMyData(parameters) 
{ 
    return DataLayer.GetMyData(parameters) 
} 

Damit kann ich jetzt ein „fake“ Datendienst in meinem TDD-Projekt erstellen:

So jetzt, wenn ich meinen Test laufen lasse, kann ich jetzt mein falsches Datenschichtobjekt meiner Geschäftslogik übergeben, von hier wird es die falsche Logik aufrufen und ein Standardergebnis zurückbekommen.

Jetzt, vorausgesetzt, Sie werden hier nicht mit echten Daten arbeiten. Wenn Sie jedoch gefälschte Objekte mit echten gültigen/ungültigen Daten einrichten, können Sie Ihre Geschäftslogik auf diese Weise testen, ohne eine Verbindung zu einer Datenbank herstellen zu müssen.

Hoffe, das hilft. Lassen Sie es mich wissen, wenn Sie eine Klärung benötigen.

+0

Wo schließe ich meine Datenkontexte im Test an. – Greens

+0

Vielen Dank. – Greens

+0

Sie haben keine Datenkontexte, da Sie den Fake-Dienst verwenden können (in dem normalerweise Ihre Datenkontexte ein statisches Ergebnis zurückgeben). – CodeLikeBeaker