コード例 #1
0
        /// <summary>
        /// Adds and configures chronoscope services on the host builder.
        /// Multiple calls are cumulative.
        /// </summary>
        /// <param name="builder">The builder to extend.</param>
        /// <param name="configure">The configuration action to apply</param>
        /// <returns>The same host builder to allow chaining.</returns>
        public static IHostBuilder UseChronoscope(this IHostBuilder builder, Action <HostBuilderContext, IChronoscopeBuilder> configure)
        {
            if (builder is null)
            {
                throw new ArgumentNullException(nameof(builder));
            }
            if (configure is null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            ChronoscopeBuilder chrono;

            if (builder.Properties.TryGetValue(BuilderKey, out var value))
            {
                chrono = (ChronoscopeBuilder)value;
            }
            else
            {
                builder.Properties[BuilderKey] = chrono = new ChronoscopeBuilder(builder);
            }

            chrono.ConfigureChronoscope(configure);

            return(builder);
        }
        public void UseChronoscopeUsesCurrentChronoscopeBuilder()
        {
            // arrange
            IHostBuilder       builder  = Mock.Of <IHostBuilder>();
            ChronoscopeBuilder cbuilder = new ChronoscopeBuilder(builder);
            var properties = new Dictionary <object, object>()
            {
                { nameof(ChronoscopeBuilder), cbuilder }
            };

            Mock.Get(builder).Setup(x => x.Properties).Returns(properties);
コード例 #3
0
        public void ConfigureServicesThrowsOnNullAction()
        {
            // arrange
            var builder  = Mock.Of <IHostBuilder>();
            var cbuilder = new ChronoscopeBuilder(builder);
            Action <HostBuilderContext, IServiceCollection> configure = null;

            // act
            var ex = Assert.Throws <ArgumentNullException>(() => cbuilder.ConfigureServices(configure));

            // assert
            Assert.Equal(nameof(configure), ex.ParamName);
        }