我一直在閱讀關於TDD的文章,並且我看到很多關於不做任何數據庫事務的文章,因爲「單獨的,沒有依賴關係的代碼塊」。TDD插入到數據庫
所以現在我有一點兩難 - 我希望能夠測試我的服務層方法AddNewStudent
實際上是否有效。此方法進入我的DbContext
,然後向數據庫中添加一條新記錄。如果數據庫操作不建議用於TDD,那麼除了僅僅在瀏覽器上測試我的應用程序外,我還可以測試AddNewStudent
方法嗎?
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;
}
}
而且我的測試看起來像這樣
[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());
}
創建一個可以在單元測試中模擬的DbContext抽象以驗證測試方法 – Nkosi
'DbContext'從哪裏來?它是實體框架嗎?您使用的是什麼單元測試框架(即NUnit)?我們能否看到任何示例代碼,顯示您想要模擬/測試的內容? –
在上面添加了一個示例代碼 –