使用xUnit和來自Microsoft.AspNet.TestHost的TestServer
,如何將每個測試包裝在數據庫事務中,以便在測試後回滾?如何打包在數據庫事務中使用TestServer的集成測試?
下面是如何創建TestServer
:
TestServer = new TestServer(TestServer.CreateBuilder()
.UseStartup<Startup>());
多數民衆贊成引用的有來自Web應用程序項目Startup
的Startup
。在該Startup
類的ConfigureServices
方法我加EF這樣的:
services.AddEntityFramework()
.AddSqlServer()
.AddDbContext<TrailsDbContext>(options => options.UseSqlServer(Configuration["Data:DefaultConnection:ConnectionString"]));
我可以拉服務DbContext
背部和存儲在Startup
類的靜態引用,但似乎很哈克。有什麼辦法可以實例化DbContext
我創建TestServer
並以某種方式讓web應用程序使用該應用程序而不是Startup
類中的應用程序?
編輯:我嘗試實例化DbContext
的另一個實例,我創建了TestServer
,並使用該上下文在每次測試之前刪除並重新創建數據庫,但每次測試的運行時間增加了大約10秒。