Мои модульные тесты имеют собственную коллекцию ServiceCollection, в которой я зарегистрировал службы, необходимые моему приложению. Для моего эксперимента я регистрирую один синглтон (
Код: Выделить всё
SomethingСейчас я добавляю TestClusterBuilder от Orleans в свой модульный тест. Согласно документации, мне нужно AddSiloBuilderConfigurator....
Как избежать двойной регистрации Something? Это похоже на ситуацию с курицей и яйцом. Хуже того, Something, который вводится в мои зерна, отличается от Singleton Something, который регистрируется в приложении.
Это кажется проблемой только в моих модульных тестах. В основном коде приложения нет TestClusterBuilder, и DI работает как положено.
Мой код выглядит примерно так:
Код: Выделить всё
[SetUp]
public void Setup()
{
var webApplicationBuilder = WebApplication.CreateBuilder();
webApplicationBuilder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory())
.ConfigureContainer(c =>
{
c.RegisterType().AsSelf().SingleInstance();
});
var app = webApplicationBuilder.Build();
var testClusterBuilder = new TestClusterBuilder(1);
testClusterBuilder.AddSiloBuilderConfigurator();
TestCluster = testClusterBuilder.Build();
TestCluster.Deploy();
}
public class TestSiloConfigurations : ISiloConfigurator
{
public void Configure(ISiloBuilder siloBuilder)
{
siloBuilder.ConfigureServices(services =>
{
services.AddSingleton();
});
}
}
Подробнее здесь: https://stackoverflow.com/questions/776 ... istrations
Мобильная версия