Developer 02 41900e8e06 test: TestBuilder für einfache DI-Konfiguration in xUnit-Tests hinzufügen
- `TestBuilder`-Klasse erstellt, um die Einrichtung der Abhängigkeitsinjektion für Unit-Tests zu vereinfachen.
- `TestBuilder` so konfiguriert, dass Dienstregistrierungen und Datenbankkontext enthalten sind.
- `TestBuilder` in das Test-Framework integriert, um eine einfache Bereitstellung von Diensten und Controllern zu ermöglichen.
2024-08-27 14:41:39 +02:00

39 lines
1.3 KiB
C#

using DAL;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using StaffDBServer.Controllers;
using StaffDBServer.SharedControllers;
namespace XUnitWebApi.Test
{
public class TestBuilder
{
private readonly ServiceCollection _services = new();
public ServiceCollection Services => !_lazyProvider.IsValueCreated
? _services
: throw new InvalidOperationException("Service provider has already been created.");
private readonly Lazy<IServiceProvider> _lazyProvider;
public IServiceProvider Provider => _lazyProvider.Value;
public TestBuilder()
{
Services.AddStaffDBRepositories();
Services.AddScoped<WebAppUserHelper>();
Services.AddDbContext<WebApiContext>(options =>
{
const int dbTimeoutInMin = 5;
options.UseSqlServer(
"Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
opts => opts.CommandTimeout((int)TimeSpan.FromMinutes(dbTimeoutInMin).TotalSeconds));
});
Services.AddSingleton<SubsidiaryController>();
_lazyProvider = new(Services.BuildServiceProvider);
}
public void ForceBuild() => _ = Provider;
}
}