我一直在研究很多關於單元測試的知識,我有幾個函數,其唯一目的是根據模型中的用戶輸入添加或更新數據庫中的行。從我讀過的內容來看,單元測試似乎並沒有真正用於此。集成測試可能更有意義,但我還沒有對這些進行過多研究。我很抱歉,如果這是其他地方,我試圖找到一個類似的例子,這個問題是我能找到的最接近的:https://softwareengineering.stackexchange.com/questions/198453/is-there-a-point-to-unit-tests-that-stub-and-mock-everything-public ...這意味着單元測試不是測試函數的最佳方式,只是調用數據庫。我是否需要單元測試此功能?
這裏是我們的數據庫功能中的一個例子...
public void AddDependant(AddDependantView addDependantView, int ID)
{
using (var db = new EnrollmentDataModel())
{
Dependant dependant = new dependant();
dependant.ID = ID;
dependant.FirstName = addDependantView.FirstName;
dependant.LastName = addDependantView.LastName;
dependant.Relation = addDependantView.Relation;
dependant.Birthday = (addDependantView.BirthDate).Value.ToString("MM/dd/yyyy");
dependant.Active = true;
dependant.RowCreatedDateTime = DateTime.Now;
db.Dependant.Add(dependant);
db.SaveChanges();
UpdateLog(ID, "Dependant Data Added", "User added their dependant data.");
}
}
的「UpdateLog」函數調用結束時在結構上這一個相似,但增加了該記錄任何一個不同的數據庫中的條目用戶活動。
那麼這個函數會受益於單元測試嗎?如果它確實會有什麼好處?整合測試會是更好的選擇嗎?如果這太基本或太寬泛,我很抱歉,但對於單元測試我很新,希望進入良好實踐。
根據定義,這不是一個單元測試,而是一個集成測試,因爲它具有一個外部依賴性,該屬性被內化到該方法。 如果你想單元測試這個,你需要做一個模擬數據存儲注入方法/類,而不是在方法中創建一個新的上下文。對此的看法各不相同......特別是因爲Linq 2 Sql無法處理的大量操作在模擬單元測試中不會失敗,而他們在集成測試中會失敗。 –
由於它在內部創建數據庫上下文,因此無法對此函數進行單元測試。你想在這裏測試什麼? SQL查詢?你只能寫集成測試。 – tym32167