- How does this package simplify Laravel HTTP testing compared to native `TestResponse` methods?
- This package extends Laravel’s built-in `TestResponse` with domain-specific assertions like `assertResponseHasError()` or `assertUnauthorizedForGuest()`, reducing repetitive code. For example, validating auth flows or error responses becomes concise without manual JSON parsing or deep `assertJson()` calls. It also supports PSR responses beyond Laravel’s HTTP layer, offering broader flexibility.
- What Laravel and PHP versions does `lara-asp-testing` support?
- The package supports Laravel 8.x through 13.x and PHP 8.0–8.5. It’s backward-compatible with PHPUnit 9+ (v10–v13), ensuring compatibility with most modern Laravel projects. Check the [requirements table](https://github.com/LastDragon-ru/lara-asp-testing) for exact version mappings.
- Can I use this with PestPHP instead of PHPUnit?
- While the package is PHPUnit-focused, it integrates with Laravel’s testing utilities, which PestPHP also uses. However, Pest’s built-in assertions (e.g., `assertResponseOk()`) may overlap with this package’s features. Test compatibility by running a small suite with both tools to avoid conflicts.
- Does this package work with Laravel’s `actingAs()` or `Http::fake()`?
- Yes, it enhances these methods by adding custom assertions for auth states (e.g., `assertUnauthorizedForGuest()`) and fake HTTP responses. For example, you can chain assertions like `actingAs($user)->assertResponseHasPermission('edit')` for cleaner test logic.
- How do I install and configure it in my Laravel project?
- Install via Composer: `composer require --dev lastdragon-ru/lara-asp-testing`. Update your `tests/TestCase.php` to include the package’s traits (e.g., `uses(AspTestCaseTrait)`). No additional configuration is needed unless you want to override default behaviors like strict scalar comparison.
- Are there performance concerns with custom assertions in large test suites?
- The package introduces minimal overhead, as assertions are optimized for Laravel’s HTTP layer. However, avoid overusing complex assertions in performance-critical tests. For large suites, profile with tools like Laravel’s `--parallel` flag or Pest’s parallel testing to isolate bottlenecks.
- What if my tests conflict with Laravel’s native `assertJson()` or Pest’s assertions?
- Namespace collisions are unlikely if you follow Laravel’s naming conventions. The package provides unique method names (e.g., `assertResponseHasError()`). If conflicts arise, alias methods in your `TestCase` or use the package’s traits selectively to include only needed features.
- Can I use this for contract testing or API security validations?
- Yes, the package includes helpers for validating auth states, error responses, and permission checks—ideal for security-focused tests. For contract testing (e.g., Pact), combine it with Laravel’s `Http::fake()` to mock external APIs while using its assertions for internal response validation.
- How does this handle complex API responses like nested JSON or pagination?
- The package extends Laravel’s `assertJson()` with custom matchers for common patterns (e.g., pagination metadata, nested error structures). For edge cases, fall back to manual assertions or Laravel’s `assertJsonStructure()`. Check the [examples](https://github.com/LastDragon-ru/lara-asp-testing) for usage with nested data.
- What’s the maintenance status, and should I rely on it long-term?
- The package is MIT-licensed and modular, but its low adoption (0 stars) suggests unproven long-term maintenance. Monitor GitHub activity or fork it if critical. For mission-critical projects, evaluate alternatives like PestPHP or Laravel’s native tools, which have stronger community backing.