[5.6] Allow faking events for only a specific part #24230
Merged
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.
Sometimes you want to fake the events for only a part of your test and not the whole test. For example to create some factories for models that rely heavily on events. We could need those events to be faked for that part, but not for the actual feature test we are performing.
In the example below the subscription would have some actions being performed through event listeners. For example a
CreateUniqueNumberForSubscription
and aCreateInvoiceForSubscription
. When creating the factory subscription we don't want those events to be triggered, but when making a child subscription (the actual feature test) we want to dispatch all the events and test the result of those events being triggerd. For example by testing if the invoice was created correctly.It would still have the possibility to only fake some events when passing those events to the second parameter:
And it also would still be possible to check if events are being dispatched on the
EventFake
inside of thisfakeFor()
callable: