Ich kann es schaffen, aber ich möchte wissen, was die beste Praxis ist und warum. Ich habe einen Controller, ein Model und ein Repository und möchte nun den Controller testen. Ich schreibe gerade einen einfachen Test, um sicherzustellen, dass die richtige Ansicht zurückgegeben wird.Unit Testen eines Controllers - Wie handle ich die Verbindungszeichenfolge?
Dies ist meine Methode in der Steuerung:
public ActionResult Selections(SelectionsViewModel model)
{
for (int i = 0; i < model.Sends.Count; i++)
{
Send send = new Send(new SendService(new Database().GetConnectionString()))
{
SendID = model.Sends[i].SendID,
Title = model.Sends[i].Title,
Subject = model.Sends[i].Subject,
SentDate = model.Sends[i].SentDate,
TimesViewed = model.Sends[i].TimesViewed,
Include = model.Sends[i].Include,
Exclude = model.Sends[i].Exclude
};
send.UpdateIncludeExclude();
}
return View(model);
}
Hier ist mein GetConnectionString() -Methode in der Datenbank-Klasse, die über meinen SendService Konstruktor gesendet wird.
public string GetConnectionString()
{
return System.Configuration.ConfigurationManager.ConnectionStrings["DEVConnectionString"].ToString();
}
Und schließlich mein Unit-Test:
[Test]
public void TestAssignmentSelections()
{
var obj = new AssignmentController();
var actResult = obj.Selections() as ViewResult;
NUnit.Framework.Assert.That(actResult.ViewName, Is.EqualTo("Selections"));
}
nun nicht mein Gerät zu testen, und ich warum. Mein Komponententestprojekt hat keinen Zugriff auf die web.config des Projekts, das ich teste, wo sich meine Verbindungszeichenfolge befindet.
Ich habe einige Nachforschungen gemacht, und anscheinend nur eine web.config zu meinem Unit-Test-Projekt hinzufügen und setzen die Verbindungszeichenfolge dort auch wird es funktionieren .. aber das scheint wie ein Hack.
Was ist der beste Weg, um darüber zu gehen? Gibt es eine andere Möglichkeit, meinen Code zu schreiben, um dies zu berücksichtigen?
Dies war hilfreich, ich denke, ich habe einige Änderungen zu machen. Vielen Dank. – halterdev