1 回答

TA貢獻(xiàn)1770條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以用來(lái)WebHostBuilder.ConfigureTestServices
調(diào)整集成測(cè)試服務(wù)器使用的服務(wù)配置。這樣,您可以重新配置數(shù)據(jù)庫(kù)上下文以使用不同的配置。文檔的集成測(cè)試章節(jié)也涵蓋了這一點(diǎn)。
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
? ? // …
? ? builder.ConfigureTestServices(services =>
? ? {
? ? ? ? // remove the existing context configuration
? ? ? ? var descriptor = services.SingleOrDefault(d => d.ServiceType == typeof(DbContextOptions<ApplicationDbContext>));
? ? ? ? if (descriptor != null)
? ? ? ? ? ? services.Remove(descriptor);
? ? ? ? services.AddDbContext<ApplicationDbContext>(options =>
? ? ? ? ? ? options.UseInMemoryDatabase("TestDB"));
? ? });
}
傳遞給的配置ConfigureTestServices將始終在 后運(yùn)行,因此Startup.ConfigureServices您可以使用它來(lái)覆蓋集成測(cè)試的實(shí)際服務(wù)。
對(duì)于大多數(shù)情況,只需在現(xiàn)有注冊(cè)上注冊(cè)其他類型即可使其適用于所有地方。除非您實(shí)際上檢索單一類型的多個(gè)服務(wù)(通過(guò)注入IEnumerable<T>某處),否則這不會(huì)產(chǎn)生負(fù)面影響。
- 1 回答
- 0 關(guān)注
- 175 瀏覽
添加回答
舉報(bào)