Je rencontre des difficultés pour tester une fabrique de contrôleurs Unity. Je suis en train de cerner le conteneur de l'unité et d'affirmer qu'une méthode a été appelée. Je reçois une erreur de distribution invalide mais je ne peux pas vraiment voir ce qui ne va pas avec mon code.Problèmes de dérision IUnityContainer lors du test de UnityControllerFactory dans le projet MVC
Voici la classe en cours de test:
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);
}
}
et voici le test:
[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));
}
et voici le message d'erreur:
System.InvalidCastException: Impossible de jeter l'objet de type 'ObjectProxy42336d85f7bb400f9590892348d1d597' pour taper 'System.Web.Mvc.IController'
Sur quelle ligne obtenez-vous cette exception? Quand j'ai testé votre code, ça a bien marché pour moi. –
Sur la dernière ligne (AssertWasCalled). Hmm. Peut-être la version de Rhino Mocks? J'utilise 3.6 (et Unity 2.0) –