My current understanding of Castle Windsor registration is that one can only validate registration by calling Resolve on a root component. But since windsor's component model knows each component's dependencies, it should be possible to test that all dependencies can be satisfied without actually instantiating anything. The main reason for wanting to do this is to have a unit test for registration that doesn't require me to stub components that call external resources on start-up.
For example. I have a class Root that has a dependency on IChild:
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
If I register Root as IRoot, but don't register an IChild. When I call resolve like this:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
I get an error:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
Is there something like:
container.TestResolve<IRoot>();
That would walk the dependency graph and check that all dependencies can be satisfied, but which doesn't actually instantiate anything?