This is part of the Semicolon&Sons Code Diary - consisting of lessons learned on the job. You're in the testing category.
Last Updated: 2024-11-23
I had the following test and it was failing:
<? php
// Ensure that email was sent
Mail::assertQueued(ReverseAuctionMail::class, function ($mail) use ($nearbyAdvisor) {
return $mail->hasTo($advisor->email);
});
I spent half an hour debugging various $advisor
emails and hard-coding the
variables in the test (e.g. giving the test a specific $advisor
email instead of
$advisor->email
). Still failures.
What I should have done was zoom out and check if the overall email delivery system was intact (rather than whether an email got delivered to a particular someone.)
<? php
Mail::assertSent(ReverseAuctionMail::class, 1); // failed
The failure here revealed that NO emails were sent at all - the delivery system was not working.
When incrementally writing tests - especially for a platform you don't understand well, start off with broad-brush tests that test the overall system and only make them narrower with time - otherwise you can end up debugging the wrong thing and losing time.