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); }