示例#1
0
        public async Task ShouldInterceptQueryHandlerWithMultipleDependencies()
        {
            var container = new ServiceContainer();

            container.RegisterQueryHandlers();
            container.Register <IFoo, Foo>();
            container.Register <IBar, Bar>();
            bool invoked   = false;
            IFoo passedFoo = null;
            IBar passedBar = null;

            container.RegisterQueryInterceptor <SampleQuery, SampleQueryResult, (IFoo foo, IBar bar)>(async(query, handler, dependencies, token) =>
            {
                passedFoo = dependencies.foo;
                passedBar = dependencies.bar;
                invoked   = true;
                return(await handler.HandleAsync(query, token));
            }
                                                                                                      );

            var query = new SampleQuery();

            using (var scope = container.BeginScope())
            {
                await container.GetInstance <IQueryHandler <SampleQuery, SampleQueryResult> >().HandleAsync(query);

                invoked.Should().BeTrue();
                query.WasHandled.Should().BeTrue();
                passedFoo.Should().BeOfType <Foo>();
                passedBar.Should().BeOfType <Bar>();
            }
        }
示例#2
0
        public async Task ShouldInterceptQueryHandler()
        {
            var container = new ServiceContainer();

            container.RegisterQueryHandlers();
            container.Register <IFoo, Foo>();
            bool invoked = false;

            container.RegisterQueryInterceptor <SampleQuery, SampleQueryResult>(async(query, handler, token) =>
            {
                invoked = true;
                return(await handler.HandleAsync(query, token));
            }
                                                                                );

            var query = new SampleQuery();

            using (var scope = container.BeginScope())
            {
                await container.GetInstance <IQueryHandler <SampleQuery, SampleQueryResult> >().HandleAsync(query);

                invoked.Should().BeTrue();
                query.WasHandled.Should().BeTrue();
            }
        }
        public async Task ShouldExecuteQueryHandler()
        {
            var container = new ServiceContainer();

            container.RegisterQueryHandlers();
            using (var scope = container.BeginScope())
            {
                var queryExecutor = scope.GetInstance <IQueryExecutor>();
                var query         = new SampleQuery();
                var result        = await queryExecutor.ExecuteAsync(query);

                query.WasHandled.Should().BeTrue();
            }
        }