コード例 #1
0
        public async Task IMiddlewareBuilderExtensions_Run()
        {
            // arrange
            var builder = new MiddlewareBuilder <Context>();
            var list    = new List <string>();

            // act
            var messageHandler = builder
                                 .Use(next => async context => { list.Add("A"); next(context); })
                                 .Use(async context => list.Add("B"))
                                 .Run(async context => list.Add("C"))
                                 .Use(next => async context => { list.Add("D"); next(context); })
                                 .Build();

            var x = new OtherContext("bar");

            await messageHandler(x);

            // assert
            Assert.Collection(list,
                              l => Assert.Equal("A", l),
                              l => Assert.Equal("B", l),
                              l => Assert.Equal("C", l)
                              );
        }
コード例 #2
0
        public async Task IMiddlewareBuilderExtensions_Use_OtherContext()
        {
            // arrange
            var builder = new MiddlewareBuilder <OtherContext>();
            var list    = new List <string>();

            // act
            builder.Use(next => { return(async context => { list.Add(context.GetType().Name + " B " + context.Foo); await next(context); }); });
            builder.Use(new TestMiddleware <OtherContext>(list));
            builder.Use(async(context, next) => { list.Add(context.GetType().Name + " C " + context.Foo); await next(context); });

            var executeAsync = builder.Build();
            var x            = new OtherContext("bar");

            await executeAsync(x);

            // assert
            Assert.Collection(list,
                              l => Assert.Equal("OtherContext B bar", l),
                              l => Assert.Equal("TestMiddleware", l),
                              l => Assert.Equal("OtherContext C bar", l)
                              );
        }