66from ioc .extra .tornado .router import Router
77from ioc .extra .tornado .handler import RouterHandler
88
9+
910def view (handler , name = None ):
1011 handler .write ("Hello %s" % name )
1112
@@ -14,11 +15,24 @@ def error(handler):
1415
1516class MyHTTPTest (AsyncHTTPTestCase ):
1617 def get_app (self ):
18+
19+ dispatcher = Dispatcher ()
20+
21+ def error_listener (event ):
22+ event .get ('request_handler' ).write ('An unexpected error occurred' )
23+
24+ def not_found_listener (event ):
25+ event .get ('request_handler' ).write ('Not Found' )
26+
27+ dispatcher .add_listener ('handler.not_found' , not_found_listener )
28+ dispatcher .add_listener ('handler.exception' , error_listener )
29+
30+
1731 router = Router ()
1832 router .add ("hello" , "/hello/<string:name>" , view , methods = ['GET' ])
1933 router .add ("exception" , "/exception" , error , methods = ['GET' ])
2034
21- return Application ([("/.*" , RouterHandler , dict (router = router , event_dispatcher = Dispatcher () ))])
35+ return Application ([("/.*" , RouterHandler , dict (router = router , event_dispatcher = dispatcher ))])
2236
2337 def test_not_found (self ):
2438 response = self .fetch ('/' )
@@ -32,5 +46,6 @@ def test_found(self):
3246
3347 def test_error (self ):
3448 response = self .fetch ('/exception' )
49+
3550 self .assertEquals ("An unexpected error occurred" , response .body [0 :28 ])
3651 self .assertEquals (500 , response .code )
0 commit comments