第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

使用 InMemory 數(shù)據(jù)庫(kù)覆蓋 WebApplicationFactory

使用 InMemory 數(shù)據(jù)庫(kù)覆蓋 WebApplicationFactory

C#
臨摹微笑 2023-08-13 16:26:11
我正在自定義 WebApplicationFactory 以使用原始應(yīng)用程序項(xiàng)目中的 Startup、appsettings。目的是創(chuàng)建指向原始應(yīng)用程序啟動(dòng)的集成測(cè)試。dbcontext 的 appsettings json 如下:  "ConnectionStrings": {    "DbConnection": "Data Source=.;Initial Catalog = TestDB; Integrated Security=True"我想覆蓋服務(wù)以使用下面的變量中的內(nèi)存數(shù)據(jù)庫(kù)。我該如何進(jìn)行呢?自定義 Web 應(yīng)用程序工廠:namespace Integrationtest{    public class CustomWebApplicationFactory<TStartup> : WebApplicationFactory<TStartup> where TStartup : class    {        protected override void ConfigureWebHost(IWebHostBuilder builder)        {            builder.ConfigureAppConfiguration((hostingContext, configurationBuilder) =>            {                var type = typeof(TStartup);                var path = @"C:\OriginalApplication";                configurationBuilder.AddJsonFile($"{path}\\appsettings.json", optional: true, reloadOnChange: true);                configurationBuilder.AddEnvironmentVariables();            });        }    }}實(shí)際集成測(cè)試:public class DepartmentAppServiceTest : IClassFixture<CustomWebApplicationFactory<OriginalApplication.Startup>>{    public dbContextTest context;    public CustomWebApplicationFactory<OriginalApplication.Startup> _factory;    public DepartmentAppServiceTest(CustomWebApplicationFactory<OriginalApplication.Startup> factory)    {        _factory = factory;    }    [Fact]    public async Task DepartmentAppTest()    {        using (var scope = _factory.Server.Host.Services.CreateScope())        {            context.Department.Add(new Department { DepartmentId = 2, DepartmentCode = "123", DepartmentName = "ABC" });            context.SaveChanges();            var foo = scope.ServiceProvider.GetRequiredService<IDepartmentAppService>();            var departmentDto = await foo.GetDepartmentById(2);            Assert.Equal("123", departmentDto.DepartmentCode);        }    }}
查看完整描述

1 回答

?
德瑪西亞99

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ù)面影響。


查看完整回答
反對(duì) 回復(fù) 2023-08-13
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)