是否可以更改集成測試的數據庫(實體框架),以便我可以在數據庫中創建測試記錄並在測試完成時將所有內容都丟棄?集成測試存儲庫類
現在我正在污染我用於本地開發的數據庫。 PS:我意識到這一定是非常基本的東西,但由於某種原因,我無法找到關於此的文檔。
是否可以更改集成測試的數據庫(實體框架),以便我可以在數據庫中創建測試記錄並在測試完成時將所有內容都丟棄?集成測試存儲庫類
現在我正在污染我用於本地開發的數據庫。 PS:我意識到這一定是非常基本的東西,但由於某種原因,我無法找到關於此的文檔。
找到我正在尋找的東西。簡單地改變數據庫名稱比我希望的更容易。您可以通過簡單地使用名稱構造DbContext來更改數據庫名稱。
new ApplicationContext("TestDatabase")
ApplicationContext中的實現:
public class ApplicationContext : DbContext, IDbContext
{
public ApplicationContext()
{
}
public ApplicationContext(string databaseName) : base(databaseName)
{
}
}
運行我的測試我創造,我可以用於測試一個單獨的數據庫。
實現此目的的一種方法是將每個測試包裝在TransactionScope塊中,或者明確地爲每個測試或在設置方法中包裝。如果範圍未提交,則更改將回滾。 Here就是一個例子。
這很大程度上取決於您的應用程序當前如何設置。 EF上下文在構造函數中允許連接字符串..但是如何創建上下文?如果您使用的是DI/IoC框架,這將非常容易切換回來和轉發。 –