Orleans TestClusterBuilder не может совместно использовать регистрации внедрения зависимостей.C#

Место общения программистов C#
Ответить
Anonymous
 Orleans TestClusterBuilder не может совместно использовать регистрации внедрения зависимостей.

Сообщение Anonymous »

Я не могу понять, как разделить регистрации служб между моим тестовым кодом, использующим Орлеан, и тестовым кодом, находящимся за пределами Орлеана. Я потратил несколько дней, пытаясь разобраться в этом.
Мои модульные тесты имеют собственную коллекцию 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();
});
}
}
Для справки: мы используем Autofac, но я не думаю, что это имеет здесь значение.


Подробнее здесь: https://stackoverflow.com/questions/776 ... istrations
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»