У меня проблемы с тестированием фабрики контроллеров единства. Я вынимаю контейнер для единицы и утверждаю, что для него был вызван метод. Я получаю неправильное ожидание приведения, но не могу понять, что не так с моим кодом.
Вот тестируемый класс:
public class UnityControllerFactory : IControllerFactory
{
private readonly IUnityContainer _container;
public UnityControllerFactory(IUnityContainer container)
{
if (container == null)
{
throw new ArgumentNullException("container");
}
_container = container;
}
public IController CreateController(RequestContext requestContext, string controllerName)
{
return _container.Resolve<IController>(controllerName);
}
public void ReleaseController(IController controller)
{
_container.Teardown(controller);
}
}
и вот тест:
[Test]
public void CreateControllerCallsResolveOnContainerWithCorrectArgument()
{
const string controllerName = "WhateverController";
var containerMock = MockRepository.GenerateMock<IUnityContainer>();
var controllerFactory = new UnityControllerFactory(containerMock);
controllerFactory.CreateController(null, controllerName);
containerMock.AssertWasCalled(x => x.Resolve<IController>(controllerName));
}
и вот сообщение об ошибке:
System.InvalidCastException: невозможно преобразовать объект типа 'ObjectProxy42336d85f7bb400f9590892348d1d597' в тип 'System.Web.Mvc.IController'