Как издеваться над регистрацией типа автофа c? - PullRequest
0 голосов
/ 11 марта 2020

У меня есть следующая регистрация в моем автофиле c:

builder.RegisterType<EmailService>().As<IEmailService>().InstancePerLifetimeScope();
builder.RegisterType<AzureBlobStorageService>().InstancePerLifetimeScope();

Некоторые команды зависят от этих служб. Но в моих тестах они мне не нужны, это не то, что я хочу тестировать.

Поэтому я попытался переписать регистрацию следующим образом:

builder.RegisterType<Mock<EmailService>>().As<IEmailService>().InstancePerLifetimeScope();
builder.RegisterType<Mock<AzureBlobStorageService>>().InstancePerLifetimeScope();

Но я получаю сообщение об ошибке: Сообщение: System.ArgumentException: Тип 'Moq.Mock 1 [EmailService]' нельзя назначить службе 'Moq.Mock`1 [[IEmailService, ...]]'.

Как это сделать правильно?

1 Ответ

0 голосов
/ 11 марта 2020

Если вы хотите зарегистрировать макет для интерфейса IEmailService, вы можете использовать метод RegisterInstance:

builder.RegisterInstance(new Mock<IEmailService>().Object)
    .As<IEmailService>();
...