Тест XUnit с автофаком
Я перешел по этой ссылке https://github.com/dennisroche/xunit.ioc.autofac чтобы создать XUnit Test с autofac, но я получил ошибку
Запрошенный сервис 'Xunit.Sdk.TestOutputHelper' не был зарегистрирован. Чтобы избежать этого исключения, либо зарегистрируйте компонент для предоставления услуги, проверьте регистрацию службы с помощью IsRegistered(), либо используйте метод ResolveOptional() для разрешения необязательной зависимости. Я добавил ниже код:
builder.Register(context => new TestOutputHelper())
.As<ITestOutputHelper>()
.InstancePerLifetimeScope();
Я что-то пропустил по ссылке выше?
2 ответа
TL;DR:
Обязательно зарегистрируйте тип TestOutputHelper
также как сам при использовании этой библиотеки.
Более длинная версия:
AutofacTestInvoker
( https://github.com/dennisroche/xunit.ioc.autofac/blob/master/src/xunit2.ioc.autofac/AutofacTestInvoker.cs) нужен конкретный класс TestOutputHelper
(не ITestOutputHelper
!) звонить TestOutputHelper.Initialize(IMessageBus, ITest)
, который недоступен в интерфейсе, и разрешается через созданный ILifetimeScope
, В вашем примере вы регистрируете его как интерфейс, так что для Autofac нет TestOutputHelper, доступного для разрешения вообще.
РЕДАКТИРОВАТЬ: документация была адаптирована. См. https://github.com/dennisroche/xunit.ioc.autofac/pull/9 для получения подробной информации.
Вы регистрируете ITestOutputHelper, а не TestOutputHelper, и кажется, что это требуется некоторым конструктором.
Если вы используете TestOutputHelper в каком-либо тесте, вы должны заменить его на ITestOutputHelper.