我有一個測驗專案,用于測驗 13 個大型專案解決方案的各個部分。許多這些測驗需要資料庫訪問(連接到測驗資料庫)和大量服務才能作業。目前我所有的測驗類都繼承自一個通用的 BaseTest 類,該類通過在 BaseTest 建構式中呼叫以下代碼來注冊 DI:
public IHostBuilder CreateHostBuilder(string[] args = null) =>
Host.CreateDefaultBuilder(args)
.UseSerilog()
.ConfigureServices((hostContext, services) =>
{
//Omitted for brevity
_mediator = _provider.GetService<IMediator>();
});
這很有效,但我懷疑每個測驗類都不必要地呼叫它。是否有等效于 Program.cs 或測驗專案可以呼叫此代碼一次的某種方式?我可以將此代碼從基礎建構式移到何處以實作此目的?
uj5u.com熱心網友回復:
我最終切換到 XUnit。功能更加豐富,xUnit.DependencyInjection nuget 包支持直接使用 Startup.cs 進行依賴注入,就像我們習慣的那樣,無需額外配置即可直接使用:
public class Startup
{
public static void ConfigureHost(IHostBuilder hostBuilder)
{
hostBuilder.UseSerilog();
}
public static void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<ISomeService, SomeService>();
//...
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/337298.html
