@@ -47,6 +47,31 @@ public function testItCallsTheHandlerAndNextMiddleware()
47
47
$ middleware ->handle ($ envelope , $ this ->getStackMock ());
48
48
}
49
49
50
+ public function testItKeysTheHandlerFailedNestedExceptionsByHandlerDescription ()
51
+ {
52
+ $ message = new DummyMessage ('Hey ' );
53
+ $ envelope = new Envelope ($ message );
54
+ $ handler = new FailingHandleMessageMiddlewareTestCallable ();
55
+
56
+ $ middleware = new HandleMessageMiddleware (new HandlersLocator ([
57
+ DummyMessage::class => [$ handler ],
58
+ ]));
59
+
60
+ try {
61
+ $ middleware ->handle ($ envelope , $ this ->getStackMock (false ));
62
+ } catch (HandlerFailedException $ e ) {
63
+ $ key = (new HandlerDescriptor ($ handler ))->getName ();
64
+
65
+ $ this ->assertCount (1 , $ e ->getWrappedExceptions ());
66
+ $ this ->assertArrayHasKey ($ key , $ e ->getWrappedExceptions ());
67
+ $ this ->assertSame ('failed ' , $ e ->getWrappedExceptions ()[$ key ]->getMessage ());
68
+
69
+ return ;
70
+ }
71
+
72
+ $ this ->fail ('Exception not thrown. ' );
73
+ }
74
+
50
75
/**
51
76
* @dataProvider itAddsHandledStampsProvider
52
77
*/
@@ -335,6 +360,14 @@ public function __invoke()
335
360
}
336
361
}
337
362
363
+ class FailingHandleMessageMiddlewareTestCallable
364
+ {
365
+ public function __invoke ()
366
+ {
367
+ throw new \Exception ('failed ' );
368
+ }
369
+ }
370
+
338
371
class HandleMessageMiddlewareNamedArgumentTestCallable
339
372
{
340
373
public function __invoke (object $ message , $ namedArgument )
0 commit comments