public void CreateActivator_ActivatesControllerInstance()
        {
            // Arrange
            var expected          = new TestService();
            var activator         = new DefaultControllerActivator(Mock.Of <ITypeActivatorCache>());
            var activatorProvider = new ControllerActivatorProvider(activator);
            var descriptor        = new ControllerActionDescriptor
            {
                ControllerTypeInfo = typeof(TestController).GetTypeInfo(),
            };
            var serviceProvider = new ServiceCollection()
                                  .AddSingleton(expected)
                                  .BuildServiceProvider();
            var context = new ControllerContext
            {
                HttpContext = new DefaultHttpContext
                {
                    RequestServices = serviceProvider,
                },
            };

            // Act
            var activatorDelegate = activatorProvider.CreateActivator(descriptor);
            var result            = activatorDelegate(context);

            // Assert
            var actual = Assert.IsType <TestController>(result);

            Assert.Same(expected, actual.TestService);
        }
        public void CreateActivator_InvokesIControllerActivator_IfItIsNotDefaultControllerActivator()
        {
            // Arrange
            var expected  = new object();
            var activator = new Mock <IControllerActivator>();

            activator.Setup(a => a.Create(It.IsAny <ControllerContext>()))
            .Returns(expected)
            .Verifiable();
            var activatorProvider = new ControllerActivatorProvider(activator.Object);
            var descriptor        = new ControllerActionDescriptor
            {
                ControllerTypeInfo = typeof(object).GetTypeInfo(),
            };

            // Act
            var activatorDelegate = activatorProvider.CreateActivator(descriptor);
            var result            = activatorDelegate(new ControllerContext());

            // Assert
            Assert.Same(expected, result);
            activator.Verify();
        }