如何從 CustomWebApplicationFactory 獲取所有服務(wù)?Startup類對(duì)IDepartmentRepository和IDepartmentAppService進(jìn)行了依賴注入。想要獲取新的 DI 存儲(chǔ)庫或服務(wù)。我們正在創(chuàng)建指向原始應(yīng)用程序啟動(dòng)的集成測(cè)試。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:\\OriginalApplicationWebAPI"; configurationBuilder.AddJsonFile($"{path}\\appsettings.json", optional: true, reloadOnChange: true); configurationBuilder.AddEnvironmentVariables(); }); } }}public class DepartmentAppServiceTest : IClassFixture<CustomWebApplicationFactory<OriginalApplication.Startup>>{ public testDbContext context; private readonly HttpClient _client; public DepartmentAppServiceTest(CustomWebApplicationFactory<OriginalApplication.Startup> factory) { _client = factory.CreateClient(); factory. // trying to find services here for IDepartmentRepository }https://fullstackmark.com/post/20/painless-integration-testing-with-aspnet-core-web-api
2 回答

皈依舞
TA貢獻(xiàn)1851條經(jīng)驗(yàn) 獲得超3個(gè)贊
是factory.Host.Services。不要忘記,您需要?jiǎng)?chuàng)建一個(gè)范圍來訪問范圍服務(wù),例如您的上下文:
using (var scope = _factory.Host.Services.CreateScope())
{
var foo = scope.ServiceProvider.GetRequiredService<Foo>();
// do something
}

慕標(biāo)5832272
TA貢獻(xiàn)1966條經(jīng)驗(yàn) 獲得超4個(gè)贊
收到錯(cuò)誤:
“CustomWebApplicationFactory”不包含“Host”的定義,并且找不到接受“CustomWebApplicationFactory”類型的第一個(gè)參數(shù)的可訪問擴(kuò)展方法“Host”(您是否缺少 using 指令或程序集引用?)
因此,我必須在添加服務(wù)器的情況下使用它,如下所示:
using (var scope = _factory.Server.Host.Services.CreateScope()) { // do something }
- 2 回答
- 0 關(guān)注
- 145 瀏覽
添加回答
舉報(bào)
0/150
提交
取消