What is your listener doing? If it's modifying your database, check that. If it is sending an email, use mail fake to test that the correct mail would have been sent.
Example for testing that the correct mail has been sent
Mail::fake();
// do whatever triggers the event
Mail::assertSent(PasswordResetToken::class, function(Mailable $mail) use ($user) {
$mail->build(); // necessary to get the subject and body
return $mail->hasTo($user->email) &&
$mail->subject === trans('resetpassword.mail.subject');
});
Yeah, you might wonder about what it is doing in the future. FWIW, I don't use a factory either to create the contents of a POST request; instead many of my tests will have a private method called validParams which represents a valid POST request payload; so it represents the form (rather than a User object in the database - which might have many more attributes than are being sent in the form):
Cool. But just keep in mind that the factory is intended to represent a Model instance, not a form... there may be more fields/attributes in the array than would be in the form you are putting under test; you might see a mass-assignment exception or two depending on how that has been set up on the model.