feat: Add PHPUnit extension for pretty-printing MappingError instances #648
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This helps with debugging MappingErrors thrown during test execution. Sometimes these can be annoying to debug because Valinor only shows "A total of 2 errors were thrown".
The extension works by overriding the TestCase
transformExceptionmethod through a trait, which means this is an opt-in feature for tests. It collects them in a singleton class and then uses the PHPUnit extension to display them in a formatted table at the end of the test run.Implementing it is a matter of using the
CollectValinorMappingErrorstrait in your TestCase class and registering thePrettyPrintMappingErrorsExtensionextension class in the phpunit configuration file. A PR to update the documentation will be made separately.This does require symfony/console for its table printing capabilities, copying that logic into the library seemed excessive. In order to not have a hard dependency on it, it is put in the suggest array in composer.json and we are using a class_exists check to see if it is installed.
Developed by: Social Deal (@socialdeal)