The Laravel Test Assertions package by Shift creator Jason McCreary is a set of helpful assertions for testing Laravel applications. The package provides a trait with useful assertions, Laravel matcher methods, and general test helpers:
use JMac\Testing\Traits\AdditionalAssertions; // Trait assertions $this->assertActionUsesFormRequest(string $controller, string $method, string $form_request);; $this->assertActionUsesMiddleware(string $controller, string $method, string|array $middleware); $this->assertRouteUsesFormRequest(string $routeName, string $formRequest); $this->assertRouteUsesMiddleware(string $routeName, array $middlewares, bool $exact); $this->assertValidationRules(array $expected, array $actual); $this->assertExactValidationRules(array $expected, array $actual); $this->assertValidationRuleContains($rule, string $class); $this->assertViewHasNull($key); $this->createFormRequest(string $class, array $data = []);
The author shared an example of using the freezeNow() helper in a test to freeze time and make assertions.
// Time $package = Package::factory()->create(); $slug = $this->faker()->slug(2); $this->freezeNow(); // Make changes... $package->slug = $slug; $package->save(); // Assert now $package->refresh(); $this->assertNow($package->updated_at);
Finally, some matches you can use to determine if a variable is a Model, Collection, or Eloquent Collection instance:
use JMac\Testing\LaravelMatchers; // Matchers LaravelMatchers::isModel(Model $model = null); LaravelMatchers::isCollection(Collection $collection = null); LaravelMatchers::isEloquentCollection(Collection $collection = null);
You can learn more about this package, get full installation instructions, and view the source code on GitHub.