Orleans TestClusterBuilder kann keine Dependency-Injection-Registrierungen teilenC#

Ein Treffpunkt für C#-Programmierer
Anonymous
 Orleans TestClusterBuilder kann keine Dependency-Injection-Registrierungen teilen

Post by Anonymous »

Ich kann nicht herausfinden, wie ich meine Dienstregistrierungen zwischen meinem Testcode, der Orleans verwendet, und dem Testcode außerhalb von Orleans teilen kann. Ich habe Tage damit verbracht, das herauszufinden.
Meine Komponententests verfügen über eine eigene ServiceCollection, in der ich die Dienste registriert habe, die meine Anwendung benötigt. Für mein Experiment registriere ich einen Singleton (

Code: Select all

Something
).
Ich füge jetzt den TestClusterBuilder von Orleans zu meinem Komponententest hinzu. Laut Dokumentation muss ich AddSiloBuilderConfigurator... hinzufügen.
Wie vermeide ich die doppelte Registrierung von Etwas? Das fühlt sich an wie eine Henne-Ei-Situation. Schlimmer noch: Das Etwas, das in meine Grains injiziert wird, ist ein anderes Singleton als das Etwas, das in der App registriert wird.
Dies scheint nur in meinen Unit-Tests ein Problem zu sein. Im Hauptanwendungscode gibt es keinen TestClusterBuilder und der DI funktioniert wie erwartet.
Mein Code sieht ungefähr so ​​aus:

Code: Select all

[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();
});
}
}
Fürs Protokoll: Wir verwenden Autofac, aber ich glaube nicht, dass das hier wichtig ist.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post