Esempio n. 1
0
        /// <summary>Setup IoC and builders.</summary>
        /// <param name="mode">Always use 'ReCreate' to recreate the IoC container before each test. If you use 'ReUse' you will need to do any clean-up needed yourself.</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'new IocContainer(L0CompositionRootForTest.Initialize(CompositionRoot.Initialize(new ServiceCollection()))'.</param>
        public static void Initialize(CleanContextMode mode, Func <IIocContainer> iocContainerFactory)
        {
            _cleanContextMode    = mode;
            _iocContainerFactory = iocContainerFactory;

            InitializeBuilders();

            _lazyIocContainer = new Lazy <IIocContainer>(_iocContainerFactory);
        }
        /// <summary>Setup IoC and builders.</summary>
        /// <param name="mode">Always use 'ReCreate' to recreate the IoC container before each test. If you use 'ReUse' you will need to do any clean-up needed yourself.</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'new IocContainer(L0CompositionRootForTest.Initialize(CompositionRoot.Initialize(new ServiceCollection()))'.</param>
        public static void Initialize(CleanContextMode mode, Func <IIocContainer> iocContainerFactory)
        {
            _cleanContextMode    = mode;
            _iocContainerFactory = iocContainerFactory;

            AddBuilderFactory((container, dataStore) => new StateBuilder(container, dataStore));
            AddBuilderFactory((container, dataStore) => new MockingBuilder(container, dataStore));

            _lazyIocContainer = new Lazy <IIocContainer>(_iocContainerFactory);
        }
Esempio n. 3
0
        /// <summary>ASP.NET Core version of setting up IoC and builders.</summary>
        /// <param name="mode">Always use ReCreate to recreate the IoC container before each test.</param>
        /// <param name="webHostBuilder">The ASP.NET Core web host builder from production code, overridden with mocks using .ConfigureTestServices().</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'provider => new IocContainer(provider)'.</param>
        /// <remarks>The passed in web host builder is used to create a <c>TestHost</c>.
        /// A client is created and can be accessed through <c>GetHttpClient()</c>.
        /// The test host instance is disposed as the first step of initialisation.</remarks>
        public static void Initialize(CleanContextMode mode, Func <IWebHostBuilder> webHostBuilder, Func <IServiceProvider, IIocContainer> iocContainerFactory) =>
        ContextBuilderFactory.Initialize(mode, () =>
        {
            _wrapped?.DisposeAndRemove();

            var testServer = new TestServer(webHostBuilder());
            _wrapped       = new Wrapper(testServer, testServer.CreateClient());
            IServiceProvider serviceProvider = testServer.Host.Services;

            return(iocContainerFactory(serviceProvider));
        });
Esempio n. 4
0
        /// <summary>ASP.NET Core version of setting up IoC and builders.</summary>
        /// <param name="mode">Always use ReCreate to recreate the IoC container before each test.</param>
        /// <param name="factoryFactory">The factory used to create a WebApplicationFactory&lt;T&gt; instance.</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'provider => new IocContainer(provider)'.</param>
        /// <typeparam name="T">The Startup class of the unit under test.</typeparam>
        public static void Initialize <T>(CleanContextMode mode, Func <WebApplicationFactory <T> > factoryFactory, Func <IServiceProvider, IIocContainer> iocContainerFactory) where T : class =>
        ContextBuilderFactory.Initialize(mode, () =>
        {
            _wrapped?.DisposeAndRemove();

            var factory = new FactoryWrapper <T>(factoryFactory);
            _wrapped    = factory;
            IServiceProvider serviceProvider = factory.GetFactory()?.Services;

            return(iocContainerFactory(serviceProvider));
        });
Esempio n. 5
0
        /// <summary>ASP.NET Core version of setting up IoC and builders.</summary>
        /// <param name="mode">Always use ReCreate to recreate the IoC container before each test.</param>
        /// <param name="webHostBuilder">The ASP.NET Core web host builder from production code, overridden with mocks using .ConfigureTestServices().</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'provider => new IocContainer(provider)'.</param>
        /// <remarks>The passed in web host builder is used to create a <c>TestHost</c>.
        /// A client is created and can be accessed through <c>GetClient()</c>.
        /// The test host instance is disposed as the first step of initialisation.</remarks>
        public static void Initialize(CleanContextMode mode, Func <IWebHostBuilder> webHostBuilder, Func <IServiceProvider, IIocContainer> iocContainerFactory) =>
        ContextBuilderFactory.Initialize(mode, () =>
        {
            _testServer?.Dispose();
            _testServer = null;
            _client     = null;

            _testServer = new TestServer(webHostBuilder());
            IServiceProvider serviceProvider = _testServer.Host.Services;
            _client = _testServer.CreateClient();

            return(iocContainerFactory(serviceProvider));
        });
Esempio n. 6
0
        /// <summary>ASP.NET Core version of setting up IoC and builders.</summary>
        /// <param name="mode">Always use ReCreate to recreate the IoC container before each test.</param>
        /// <param name="hostBuilder">The ASP.NET Core host builder from production code, overridden with mocks using .ConfigureTestServices().</param>
        /// <param name="iocContainerFactory">Creates the IoC container, such as e.g. 'provider => new IocContainer(provider)'.</param>
        /// <remarks>The passed in web host builder is used to create a <c>TestHost</c>.
        /// A client is created and can be accessed through <c>GetHttpClient()</c>.
        /// The test host instance is disposed as the first step of initialisation.</remarks>
        public static void Initialize(CleanContextMode mode, Func <IHostBuilder> hostBuilder, Func <IServiceProvider, IIocContainer> iocContainerFactory) =>
        ContextBuilderFactory.Initialize(mode, () =>
        {
            _wrapped?.DisposeAndRemove();

            var host = hostBuilder().Build();
            host.Start();

            var testServer = host.GetTestServer();
            var client     = testServer.CreateClient();
            _wrapped       = new Wrapper(testServer, client);
            IServiceProvider serviceProvider = testServer.Services;

            return(iocContainerFactory(serviceProvider));
        });