Esempio n. 1
0
        public void ShouldDispatchExceptionsToUIThread()
        {
            var testThreadId = Thread.CurrentThread.ManagedThreadId;
            var waitHandle   = new AutoResetEvent(false);

            Controller.Method("ShowCustomer").Returns((int a) =>
            {
                Assert.AreNotEqual(testThreadId, Thread.CurrentThread.ManagedThreadId);
                throw new DivideByZeroException();
                return(new DoNothingResult());
            }).MustBeCalled();

            var dispatcher = new ManualPumpDispatcher();

            var request = RequestBuilder.CreateRequest("ExampleController", "ShowCustomer", new { a = 3 });

            request.Dispatcher = dispatcher;

            Controller.Instance.ActionInvoker = new AsyncActionInvoker();
            Controller.Instance.Execute(request.BuildControllerContext(Controller.Instance));

            Thread.Sleep(400);

            var ex = Assert.Throws <AsyncControllerExecutionException>(dispatcher.Pump);

            Assert.IsInstanceOf <DivideByZeroException>(ex.InnerException);
        }
        public void ShouldDispatchExceptionsToUIThread()
        {
            var testThreadId = Thread.CurrentThread.ManagedThreadId;
            var waitHandle = new AutoResetEvent(false);

            Controller.Method("ShowCustomer").Returns((int a) =>
            {
                Assert.AreNotEqual(testThreadId, Thread.CurrentThread.ManagedThreadId);
                throw new DivideByZeroException();
                return new DoNothingResult();
            }).MustBeCalled();

            var dispatcher = new ManualPumpDispatcher();

            var request = RequestBuilder.CreateRequest("ExampleController", "ShowCustomer", new {a = 3});
            request.Dispatcher = dispatcher;
            
            Controller.Instance.ActionInvoker = new AsyncActionInvoker();
            Controller.Instance.Execute(request.BuildControllerContext(Controller.Instance));

            Thread.Sleep(400);

            var ex = Assert.Throws<AsyncControllerExecutionException>(dispatcher.Pump);
            Assert.IsInstanceOf<DivideByZeroException>(ex.InnerException);
        }