Модульное тестирование IServiceCollection Регистрация - PullRequest
0 голосов
/ 04 июля 2018

Я пытаюсь найти самый простой способ проверить мой метод регистрации сервисов для моей платформы. Я создаю динамические сервисы, моя регистрация выглядит так:

var messageHubConfig = new DynamicHubServiceConfiguration<Message, MessageDTO>();
messageHubConfig.SetDynamicHubOptions<AstootContext>(async (context, dto) =>
{
    return await context.ConversationSubscriptions
                        .Where(x => x.ConversationId == dto.ConversationId 
                               && x.IsSubscribed)
                        .Distinct()
                        .Select(x => x.User.UniqueIdentifier)
                        .ToListAsync();
});

messageHubConfig.RequiresDynamicValidator = false;
messageHubConfig.EventMapping.AddCreateEvent(async (sp, obj, dto) =>
{
    var conversationService = sp.GetService<IRestEzService<Conversation, ConversationDTO>>();
    var conversationDTO = await conversationService.Get(new object[] { dto.ConversationId });
    var hubTaskQueue = sp.GetService<IHubServiceTaskQueue>();
    hubTaskQueue.QueueDynamicCreate(conversationDTO);
}).When(async (sp, dto) => {
    var context = sp.GetService<AstootContext>();
    return await context.Conversations.Where(x => x.Id == dto.ConversationId).Where(x => x.Messages.Count == 1).AnyAsync();
});

//Registers service with a hub
restConfiguration.RegisterRestService(typeof(IMessageDTOService), 
                                      typeof(MessageDTOService), 
                                      messageHubConfig);

Внутри моего регистрационного метода отдыха. У меня много разных услуг. Регистрация, например:

services.AddTransient(restServiceType, (IServiceProvider serviceProvider) =>
{
    var restService = (IRestEzService<TEntity, TDTO>)
        ActivatorUtilities.CreateInstance(serviceProvider, restServiceImplementationType);
    serviceOption.EventMapping?.Register(serviceProvider, restService);

    return restService;
});

Как я могу быть уверен, что моя заводская конфигурация зарегистрирована правильно, Как я могу создать Service Collection для тестирования?

1 Ответ

0 голосов
/ 05 июля 2018

Создать ServiceCollection,

var services = new ServiceCollection();

вызовите вашу функцию регистрации и затем подтвердите, что ваш restServiceType был добавлен.

Далее создайте провайдера из набора служб, разрешите restServiceType

var provider = services.BuildServiceProvider();
var restService = provider.GetService(restServiceType);

и утверждают, что оно создано по желанию.

Теперь это основано исключительно на том, что в данный момент показано в вашем примере, так как я не знаю каких-либо других зависимостей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...