mirror of
https://gitee.com/dotnetchina/OpenAuth.Net.git
synced 2025-09-20 02:29:24 +08:00
增加支持Autofac的http单元测试
fix issue #I50DRR
This commit is contained in:
46
OpenAuth.WebApi/Test/CustomServiceProviderFactory.cs
Normal file
46
OpenAuth.WebApi/Test/CustomServiceProviderFactory.cs
Normal file
@@ -0,0 +1,46 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using Autofac;
|
||||
using Autofac.Extensions.DependencyInjection;
|
||||
using Microsoft.AspNetCore.Hosting;
|
||||
using Microsoft.Extensions.DependencyInjection;
|
||||
|
||||
namespace OpenAuth.WebApi.Test
|
||||
{
|
||||
/// <summary>
|
||||
/// Based upon https://github.com/dotnet/aspnetcore/issues/14907#issuecomment-620750841 - only necessary because of an issue in ASP.NET Core
|
||||
/// </summary>
|
||||
public class CustomServiceProviderFactory : IServiceProviderFactory<ContainerBuilder>
|
||||
{
|
||||
private AutofacServiceProviderFactory _wrapped;
|
||||
private IServiceCollection _services;
|
||||
|
||||
public CustomServiceProviderFactory()
|
||||
{
|
||||
_wrapped = new AutofacServiceProviderFactory();
|
||||
}
|
||||
|
||||
public ContainerBuilder CreateBuilder(IServiceCollection services)
|
||||
{
|
||||
// Store the services for later.
|
||||
_services = services;
|
||||
|
||||
return _wrapped.CreateBuilder(services);
|
||||
}
|
||||
|
||||
public IServiceProvider CreateServiceProvider(ContainerBuilder containerBuilder)
|
||||
{
|
||||
var sp = _services.BuildServiceProvider();
|
||||
#pragma warning disable CS0612 // Type or member is obsolete
|
||||
var filters = sp.GetRequiredService<IEnumerable<IStartupConfigureContainerFilter<ContainerBuilder>>>();
|
||||
#pragma warning restore CS0612 // Type or member is obsolete
|
||||
|
||||
foreach (var filter in filters)
|
||||
{
|
||||
filter.ConfigureContainer(b => { })(containerBuilder);
|
||||
}
|
||||
|
||||
return _wrapped.CreateServiceProvider(containerBuilder);
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user