コード例 #1
0
            public void Dispatch_method_executes_command_and_dispatches_to_interceptors_which_can_change_result()
            {
                var interceptionContext = new DbInterceptionContext();
                var cancellationToken   = new CancellationToken();

                var mockCommand = new Mock <DbCommand>();
                var result      = new Task <int>(() => 11);

                mockCommand.Setup(m => m.ExecuteNonQueryAsync(cancellationToken)).Returns(result);

                var mockInterceptor = new Mock <IDbCommandInterceptor>();
                var interceptResult = new Task <int>(() => 13);

                mockInterceptor.Setup(m => m.AsyncNonQueryExecuted(mockCommand.Object, result, interceptionContext))
                .Returns(interceptResult);

                var dispatcher         = new DbCommandDispatcher();
                var internalDispatcher = dispatcher.InternalDispatcher;

                internalDispatcher.Add(mockInterceptor.Object);

                Assert.Same(interceptResult, dispatcher.AsyncNonQuery(mockCommand.Object, cancellationToken, interceptionContext));

                mockCommand.Verify(m => m.ExecuteNonQueryAsync(cancellationToken));
                mockInterceptor.Verify(m => m.AsyncNonQueryExecuting(mockCommand.Object, interceptionContext));
                mockInterceptor.Verify(m => m.AsyncNonQueryExecuted(mockCommand.Object, result, interceptionContext));
            }