мы используем Autofac в качестве нашего контейнера для инъекции зависимостей. Мы хотели бы проверить различные вещи, используя NDepend, чтобы гарантировать, что наш DI настроен правильно и не используется неправильно (у нас очень большое решение).Как создать пользовательское правило NDepend для проверки регистраций DI
В модульное тестирование, я мог бы принять такой подход:
private static IEnumerable<TestCaseData> TestCases
{
get
{
return from registration in Container.Value
.ComponentRegistry.Registrations
from service in registration.Services
where service is TypedService
orderby service.Description
select new TestCaseData(registration, service)
.SetName(service.Description);
}
}
потом:
[Test]
[TestCaseSource("TestCases")]
public void CanBeResolved(
IComponentRegistration componentRegistration,
TypedService typedService)
{
using (var scope = Container.Value.BeginLifetimeScope())
scope.Resolve(typedService.ServiceType);
}
Как я могу создать пользовательские правила в пределах NDepend для обеспечения того, чтобы все соответствующие типы регистрируются с Autofac контейнер?
Спасибо, Richard
Эти регистрации часто очень динамичны по своему характеру, а это значит, что вам нужно запустить приложение, чтобы проверить, работает ли он (как и при модульном тесте). Однако NDepend использует статический анализ кода; он не запускает ваш код. Я не думаю, что вам удастся использовать NDepend (или любой статический инструмент анализа кода) для этого, или, по крайней мере, вы будете злоупотреблять инструментом и сделать себя необычайно жестким. – Steven
Спасибо. В этом есть смысл. – Richard
Но оставьте открытым вопрос. Мне интересно узнать, что такое г-н. NDepend (patrick) должен сказать об этом. – Steven