Удаление или перезапись компонента из контейнера Windsor
Я пытаюсь выполнить, казалось бы, супер простую вещь: из моего модульного теста я хочу заменить решаемый тип на фиктивный / поддельный объект.
Например: конфиг xml заявляет, что компонент службы IInterface должен разрешить в ClassA. Это нормально, но из моего модульного теста я хочу вместо этого разрешить тип в FakeClassA. Я не могу использовать container.AddComponent для этого, так как "для данного ключа уже зарегистрирован компонент".
1 ответ
IKernel имеет метод RemoveComponent.
Но для модульных тестов рекомендуется вообще не использовать контейнер, или если настройка теста становится слишком плотной из-за зависимостей, используйте AutoMockingContainer.
Вот еще одна (более обновленная) реализация.