public void CreateControllerWillInvokeFactoriesWithCorrectArguments(
     string controllerName, 
     RequestContext requestContext,
     [Frozen]Mock<IControllerFactory> factoryMock,
     CompositeControllerFactory sut)
 {
     sut.CreateController(requestContext, controllerName);
     factoryMock.Verify(x => x.CreateController(requestContext, controllerName));
 }
 public void CreateControllerWillReturnNullIfAllFactoriesReturnNull(
     string controllerName, 
     RequestContext requestContext,
     Mock<IControllerFactory>[] factoryStubs)
 {
     // Fixture Setup
     factoryStubs[0]
         .Setup(x => x.CreateController(requestContext, controllerName))
         .Returns((IController)null);
     factoryStubs[1]
         .Setup(x => x.CreateController(requestContext, controllerName))
         .Returns((IController)null);
     factoryStubs[2]
         .Setup(x => x.CreateController(requestContext, controllerName))
         .Returns((IController)null);
     
     var sut = new CompositeControllerFactory(factoryStubs.Select(x => x.Object));
     // Exercise system
     var result = sut.CreateController(requestContext, controllerName);
     // Verify outcome
     Assert.Null(result);
     // Teardown
 }