預存程序(Stored Procedure)的測試專案設定一直都沒有紀錄,避免日後失意,還是記錄下
情境是先有DB以及相關的 SP,後續再加上單元測試
先確認 Visual Studio 有安裝 EF Core Power Tools
這邊建立一個空白方案
接著新增類別庫專案(選.NET8 之後的版本),命名方式可以是DBName+Repositories
Class1.cs 檔案可以砍掉(用不到)
接著在專案上滑鼠右鍵,透過 EF Core Power Tools 進行反向工程,關於 Tools 可參考這篇
選取連線及 EF Core 版本
點選確認後,選取相關SP,亦可透過搜尋快速尋找
點選確認後,進行一些項目的勾選,在這一頁大部分可以預設,但命名的部分我
都會勾選,主要是因為單複數化的區別以及直接使用表格和欄位名稱很方便,
後續即使有異動,EF Core Power Tools 重拉也已經將成本降低到幾乎為零
再來是「進階」的部分
我會將 DbContext 以及結構描述都拆分,因觀察拆分後感覺較好閱讀
按下「確定」後就會長出相關檔案
然後建置專案,發現需要安裝套件
安裝套件 Microsoft.EntityFrameworkCore.SqlServer
安裝後重新建置,成功
接著準備單元測試專案,建立前需要先確認Visual Studio 有安裝以下套件
建立測試專案
預設測試專案結構
參考 Repositories 專案
主要是為了後續撰寫單元測試的時候可以使用 EF Core 產生的 Models
安裝相關套件
Microsoft.Extensions.Configuration.Json → 這部分是為了資料庫的連線字串
FluentAssertions → 記得選 6.12.1 版本,不要選最新的
安裝完之後,新增json 檔案並且命名為 appsettings
內容結構如下
將檔案屬性設定為「永遠複製」,設定完之後建置專案
而為了要讓 DbContext 吃到 appsetting 的連線字串,需要加工 DbContext
再Support 資料夾下新增 class.cs 並且命名為 MyDBContext(可識別即可),
並且讓該類別繼承 Repositories 專案的 DBContext
新增 TableExtension 擴充
這邊主要是因為可以讓 Table 物件支援 ToDictionary() 方法(參考)
以上就是相關設定
值得一提的是,若是本機測試這部分已勘用,若要運作再 CI/CD 情境,可能連線字串的部分,
必須要做些調整
參考
https://marketplace.visualstudio.com/items?itemName=ErikEJ.EFCorePowerTools
https://marketplace.visualstudio.com/items?itemName=Reqnroll.ReqnrollForVisualStudio2022
沒有留言:
張貼留言