我有一個設計有點復雜的資料庫,因此問題也很復雜。
我通過物體框架與這個資料庫進行通信。我的代碼庫如下所示:
- 資料層:物體框架、DbContext、資料模型。
- 存盤庫層:模型的基本 CRUD 操作提供程式。
- 邏輯層:業務邏輯。
- Web API 層:與服務通信的控制器。
- 測驗層:做業務邏輯單元測驗。
我正在撰寫單元測驗,但我不知道如何正確撰寫它們,或者如果我的業務邏輯層很糟糕......在大學里,他們認為我這樣做,但我想我可能會誤解了這種模式背后的原理......
在我的業務邏輯方法中,我將域物件作為引數傳遞,并使用 LINQ 來“查詢”資料庫以找到所需的結果。每種方法都使用“查詢”作為邏輯。所以它在很大程度上依賴于查詢。例如,我需要確定 2 個用戶是否相互匹配(如在 Tinder 中)
public bool AreTheyMatched(Profile requestor, Profile requested)
{
var areTheyMatched = ChatRepository.GetAll().Where(x =>
x.Profiles.Contains(requestor) &&
x.Profiles.Contains(requested) &&
x.SYS_ChatType.Type.ToLower() == "match" &&
x.Profiles.Count() == 2).Count() == 1;
return areTheyMatched;
這里的最佳做法是什么?
- 我覺得在這里嘲笑查詢是沒用的......
- 也覺得查詢不應該是邏輯的一部分......
- 模擬 GetAll() 方法是可以的,但由于物體框架生成的 POCO 類是自參考的(Chat 有 Profile 串列,Profile 有 Chat 物體,等等......)模擬的設定會很困難,但可能。 ..
- 我應該從引數范圍內收集資料嗎?
- 如何測驗查詢以查看它們是否正確?
- 我該如何測驗業務邏輯?
我在插入資料庫時??進行了驗證簡單物件的單元測驗。這對我來說是理所當然的。但是這個話題的復雜性似乎超出了我目前的理解范圍。
uj5u.com熱心網友回復:
使用適合您當前測驗用例的嵌套組態檔創建聊天物件串列。例如,實際上包含兩個組態檔的匹配項的串列。然后模擬存盤庫以回傳此串列并斷言找到了匹配項。對于另一個測驗用例,設定沒有匹配的聊天串列,并斷言沒有找到匹配。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/437527.html
上一篇:點擊多個:真柏
下一篇:賽普拉斯自定義查找命令不可鏈接
