Updated Service Provider to not register the Mailer if tests are running #20
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.
I recently had an issue where some tests were failing that used the Mail::fake() and Mail::assert...() methods.
Rather than using the Mail facade or anything in the controller I was injecting
Illuminate\Contracts\Mail\Mailerand then using that to send my emails. After a lot of debugging I found that when I was usingdd()in the controller on the Mailer variable while running the failing test, it was actually an instance of the Helo Mailer rather than the MailFake I was expecting.I fixed this by updating my phpunit.xml to set the
HELO_ENABLEDenv variable tofalse. At first, it wasn't immediately obvious that Helo was causing the issue and that I could stop the Helo Mailer getting instantiated by adding the variable, which is why I created this PR just to update the Service Provider to return early if$this->app->runningUnitTests()istruefor anyone else that runs into this issue and to save a couple of hours of trying to figure out why!