requestExtensionMock = \Mockery::mock(RequestExtensionInterface::class); $this->sessionMiddleware = new SessionMiddleware($this->requestExtensionMock); } public function testHandleWithLaravelResponse(): void { $requestMock = \Mockery::mock(LaravelRequest::class); $responseMock = \Mockery::mock(LaravelResponse::class); $this->requestExtensionMock->expects('flash') ->withArgs(function ($flasherRequest, $flasherResponse) { return $flasherRequest instanceof Request && $flasherResponse instanceof Response; }); $handle = $this->sessionMiddleware->handle($requestMock, fn () => $responseMock); $this->assertSame($responseMock, $handle); } public function testHandleWithLaravelJsonResponse(): void { $requestMock = \Mockery::mock(LaravelRequest::class); $responseMock = \Mockery::mock(LaravelJsonResponse::class); $this->requestExtensionMock->expects('flash') ->withArgs(function ($flasherRequest, $flasherResponse) { return $flasherRequest instanceof Request && $flasherResponse instanceof Response; }); $handle = $this->sessionMiddleware->handle($requestMock, fn () => $responseMock); $this->assertSame($responseMock, $handle); } public function testHandleWithOtherResponses(): void { $requestMock = \Mockery::mock(LaravelRequest::class); $responseMock = \Mockery::mock(\Symfony\Component\HttpFoundation\Response::class); $this->requestExtensionMock->allows('flash')->once(); $handle = $this->sessionMiddleware->handle($requestMock, fn () => $responseMock); $this->assertSame($responseMock, $handle); } }