public static async Task ExecuteInNServiceBusScope(Func <IServiceScope, IBus, Task> action) { var nServiceBusScope = TestServiceProvider.GetNServiceBusServiceProvider( NServiceBusOverrideConfig.GetNServiceBusAdditionalOverrideConfig()) .CreateScope(); var inputQueue = nServiceBusScope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqInputQueue(); var outputQueue = nServiceBusScope.ServiceProvider.GetService <IConfiguration>().GetRabbitMqOutputQueue(); var rebusIntegrationAdditionalConfig = new Dictionary <string, string> { ["rabbitMq:inputQueue"] = outputQueue, ["rabbitMq:outputQueue"] = inputQueue }; var rebusScope = TestServiceProvider.GetMessageHandlerServiceProvider(rebusIntegrationAdditionalConfig).CreateScope(); var rebusBus = rebusScope.ServiceProvider.GetService <IBus>(); try { await action.Invoke(nServiceBusScope, rebusBus); } finally { nServiceBusScope.ServiceProvider.GetService <IRabbitMqUtility>().DeleteInputQueue(); rebusScope.ServiceProvider.GetService <IRabbitMqUtility>().DeleteInputQueue(); } }