簡體   English   中英

使用現有數據庫中的數據在ASP.NET MVC中創建數據庫模擬

[英]Creating Database Mocks in ASP.NET MVC using Data from Existing Database

我有一個現有的ASP.NET MVC應用程序,在SQL Server數據庫中有一些示例數據,效果很好。

假設我已經准備好所有必需的存儲庫和IOC,是否有一個工具可以從一組表中提取數據,並將其“凍結”到一個模擬對象中(也許使用XML文件來存儲數據) ,以便我可以分離數據庫並將模擬數據用於單元測試?

根據您要測試的內容,可能會有不同的方法。

如果要測試數據訪問邏輯,則這不再是單元測試,而是集成測試。 對於這類測試,最好是用一些更輕巧的內存數據庫(例如SQLite)輕松替換實際數據庫,該數據庫將在運行每個測試之前重新構建。 如果您使用的是ORM,則此任務很容易。 您需要做的就是從現有數據庫中生成SQL腳本(INSERT INTO ...),修改方言並使之適應SQLite(如有必要),讀取並注入到SQLite文件中,最后剩下的就是指示您數據訪問層,以使用SQLite方言和連接字符串進行單元測試。

現在,如果您不使用ORM,並且您的數據訪問邏輯與MSSQL綁定在一起,那么事情變得更糟了,您將需要一個實時數據庫來執行那些集成測試。 在這種情況下,我建議您通過僅修改連接字符串來復制用於測試的真實數據庫。 再次,您將需要正確地setupteardown (最好在事務中)此測試數據庫,以使其處於測試的已知狀態。

如果您要測試依賴於這些存儲庫(例如,控制器)的代碼,則無需擔心模擬數據,因為您的控制器依賴於抽象存儲庫而不是實際的實現(不是),因此,您可以輕松地模擬存儲庫的方法,以測試控制器中的邏輯。

我不知道您要做什么的直接方法,但是MSSQL支持導出到CSV,Access和Excel。 雖然,這要求您更改中間層的數據訪問層,而且,我不認為這可以回答您的問題:

將其“冷凍干燥”成模擬對象

我不確定。 僅在與新數據庫相同的SQL Server上或在開發SQL服務器上還原數據庫的備份是否可行?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM