How can I override a component registered in Castl

2019-05-11 13:12发布

I'm just starting with Windsor, so please be gentle :) I have a scenario where I want to be able to override/replace components placed inside a windsor container. Read on ...

In my prod code, I want to be able to register a component which implements a base class, and use a container to resolve the implementer. So far, using

container.Register(Component.For<LoggerBase>().ImplementedBy<DebugLogger>());

and

container.Resolve<LoggerBase>();

In my tests, I'd like to add a stub/mock implementation to override the "DebugLogger" implementation so that when my prod code calls container.Resolve<LoggerBase>(); it gets the overridden implementation.

Any pointers would be welcome!

1条回答
一夜七次
2楼-- · 2019-05-11 13:59

Instead of chasing down that path, you should rather use different container instances for different scenarios. Each instance could be configured differently. That's the whole point of a DI Container.

However, in general DI Containers should not be used for unit testing.

查看更多
登录 后发表回答