Does it make sense to mock an IoC container? If so how would I go about it, using Moq?
I am creating a Prism 4 app, using Unity 2.0 as the IoC container. I inject th
I agree with Mark Seemann's answer generally for 99% of classes this works fine.
There are some factory type classes (perhaps classes that take a Model and convert it to a ViewModel where those ViewModels have dependencies) for which this doesn't work. In these cases, I generally accept the interface for the container, rather than its concrete type (IUnityContainer, in your case) and mock as usual.
public class MyWidgetFactory : IMyWidgetFactory
{
public MyWidgetFactory(IUnityContainer container)
{
//...
}
public Widget[] GetWidgets()
{
//...
}
}
public class MyWidgetFactoryConsumer
{
private Widget[] _widgets;
public MyWidgetFactoryConsumer(IMyWidgetFactory factory)
{
_widgets = factory.GetWidgets();
}
}
Both of the above classes are testable, with the factory class needing to have a mocked version of the IUnityContainer and the consumer needing only the factory itself mocked.