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; // MatchersLaravelMatchers::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.