laravel-doctrine / orm

A drop-in Doctrine ORM 2 implementation for Laravel 5+ and Lumen

Home Page:http://laraveldoctrine.org

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Issues with running PHPUnit coverage with Xdebug when middleware runs

joshmurrayeu opened this issue · comments

I've noticed an issue where if the logging middleware has been enabled, PHPUnit won't be able to complete the code coverage report and show it within PhpStorm. Please see the screenshot below:

image

As you can see on line 10, it's destructing the Middleware class once the code has finished executing. Typically, whenever the Target class [config] does not exist. exception is thrown, something is being called at the wrong time e.g. similar to using a Laravel factory in a @dataProvider or using Container methods within the setUp before the application has actually been able to boot up.

I've tried debugging for the last 20 minutes or so and the cause is this line:

orm/config/doctrine.php

Lines 90 to 92 in 106f0dc

'middlewares' => [
// Doctrine\DBAL\Logging\Middleware::class
]

A possible fix is:

'middleware' => (new Illuminate\Support\Collection(env('DOCTRINE_MIDDLEWARE') ?? []))->toArray()

And of course, adding DOCTRINE_MIDDLEWARE=Doctrine\DBAL\Logging\Middleware to your .env.

I think this "solution" is a bit ugly. It does give a better ability to enable and disable middleware based on your environment. I haven't tested caching the configuration, yet.. although, I wouldn't anticipate any issues doing so.

It could be possible I've put a piece of code in the wrong place, so I'll use my fix for the time being. I'll update this issue should I find the root cause (if one exists).

@eigan What are your thoughts?