Ich versuche, eine Reihe von MS Visual Studio-Unit-Tests für meine n-tiered Web-App zu erstellen, aber aus irgendeinem Grund kann ich nicht diese Tests ausführen und ich erhalte den folgenden Fehler -
"Objektreferenz nicht auf eine Instanz eines Objekts"
Was ich versuche zu tun, ist die Prüfung meiner Datenzugriffsschicht, wo ich LINQ-Datenkontext-Klasse verwenden, um eine bestimmte Funktion auszuführen und ein Ergebnis zurückgeben, jedoch während der Debugging-Prozess fand ich heraus, dass alle Tests fehlschlagen, sobald Sie die LINQ-Datenkontext-Klasse erhalten und es hat etwas mit der Verbindungszeichenfolge zu tun, aber ich kippe herausfinden, was das Problem ist.
Das Debuggen von Tests schlägt hier fehl (die zweite Zeile):
public EICDataClassesDataContext() :
base(global::System.Configuration.ConfigurationManager.ConnectionStrings["EICDatabaseConnectionString"].ConnectionString, mappingSource)
{
OnCreated();
}
Und mein Test sieht folgendermaßen aus:
TestMethod()]
public void OnGetCustomerIDTest()
{
FrontLineStaffDataAccess target = new FrontLineStaffDataAccess(); // TODO: Initialize to an appropriate value
string regNo = "jonh"; // TODO: Initialize to an appropriate value
int expected = 10; // TODO: Initialize to an appropriate value
int actual;
actual = target.OnGetCustomerID(regNo);
Assert.AreEqual(expected, actual);
}
Die Methode, die ich von DAL aus aufrufe, ist:
public int OnGetCustomerID(string regNo)
{
using (LINQDataAccess.EICDataClassesDataContext dataContext = new LINQDataAccess.EICDataClassesDataContext())
{
IEnumerable<LINQDataAccess.GetCustomerIDResult> sProcCustomerIDResult = dataContext.GetCustomerID(regNo);
int customerID = sProcCustomerIDResult.First().CustomerID;
return customerID;
}
}
So im Grunde alles fehlschlägt, nachdem es die 1. Zeile der DA-Schicht-Methode erreicht und wenn es versucht, die LINQ-Datenzugriffsklasse zu instanziieren...
Ich habe etwa 10 Stunden damit verbracht, das Problem zu beheben, aber ohne Ergebnis... Ich wäre für jede Hilfe dankbar!
UPDATE: Endlich habe ich das behoben!!!!:) Ich weiß nicht, warum, aber aus irgendeinem Grund in der app.config-Datei die Verbindung zu meiner Datenbank war wie folgt:
AttachDbFilename=|DataDirectory| \EICDatabase.MDF
Ich habe also einfach den Pfad geändert und anstelle von |DataDirectory| den tatsächlichen Pfad angegeben, in dem sich meine MDF-Datei befindet, d. h.
C:\Users\1\Documents\Visual Studio 2008 \Projects\EICWebSystem\EICWebSystem\App_Data\EICDatabase.mdf
Nachdem ich das getan hatte, funktionierte es, aber es ist immer noch nicht klar, was das Problem war... wahrscheinlich ein falscher Pfad zur Datenbank... Meine web.config des ASP.NET-Projekts enthält das |DataDirectory| \EICDatabase.MDF Weg aber