Ich habe über TDD gelesen und ich habe eine Menge Beiträge über keine Datenbanktransaktion zu sehen, weil "einzelne, isolierte Block des Codes ohne Abhängigkeiten".TDD Einfügen in die Datenbank
So jetzt habe ich ein kleines Dilemma - Ich möchte testen können, ob meine Service-Layer-Methode namens AddNewStudent
tatsächlich funktioniert. Diese Methode geht in meine DbContext
und dann fügen Sie einen neuen Datensatz in die Datenbank. Wenn Datenbankoperationen nicht für TDD empfohlen werden, wie kann ich sonst die Methode AddNewStudent
testen, anstatt nur meine Anwendung in einem Browser zu testen?
public class StudentManager : ManagerBase
{
internal StudentManager() { }
public Student AddNewStudent(string fName, string lName, DateTime dob)
{
// Create a student model instance using factory
var record = Factories.StudentFac.CreateOne(fName, lName, dob);
DbContext.Students.Add(record);
DbContext.SaveChanges();
return record;
}
}
Und mein Test wie dieser
[TestMethod]
public void StudentManager_AddNewStudent_Test()
{
var fName = "Ryan";
var lName = "Rigil";
var dob = DateTime.Parse("3/1/2006");
var student = Managers.StudentManager.AddNewStudent(fName, lName, dob);
Assert.AreEqual(fName, student.FirstName);
Assert.AreEqual(lName, student.LastName);
Assert.AreEqual(dob.ToShortDateString(), student.DoB.ToShortDateString());
}
Erstellen Sie eine Abstraktion Ihres DbContext, die Sie in Ihren Komponententests simulieren können, um die zu testende Methode zu verifizieren. – Nkosi
Woher kommt 'DbContext'? Ist es Entitätsrahmen? Welches Einheitentestframework verwenden Sie (d. H. NUnit)? Können wir einen Beispielcode sehen, der zeigt, was Sie gerne testen möchten? –
Ein Beispielcode über –