kishieel / laravel-form-request-unit
Laravel 表单请求单元测试助手
Requires
- php: ^7.3|^8.0
- illuminate/contracts: ^7.0|^8.0
- illuminate/support: ^7.0|^8.0
- illuminate/validation: ^7.0|^8.0
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.9|^3.3
- marcocesarato/php-conventional-changelog: ^1.12
- orchestra/testbench: ^4.0|^5.0|^6.0
- pestphp/pest: ^1.21
- phpunit/phpunit: ^8.0|^9.3
This package is auto-updated.
Last update: 2024-09-09 15:57:34 UTC
README
为 Laravel 表单请求单元测试提供辅助。它允许您通过将表单请求断言分离到单独的测试中,使控制器测试保持简洁并专注于测试其正确目的。
安装
您可以通过 composer 安装此包。
composer require --dev kishieel/laravel-form-request-unit
用法
规则验证
使用 FormRequestValidator
特性,您可以在不直接请求控制器的情况下测试您的 FormRequest
。提到的特性提供了 validate
方法,该方法接受 FormRequest
和应该被验证的数据作为参数。
use Kishieel\RequestUnit\FormRequestValidator; public function some_example_test() { $formRequest = new YourFormRequest(); $data = [ 'property_1' => 12, 'property_2' => 'string' ]; $result = $this->validate($formRequest, $data); // .. }
结果,您将获得 ValidatorResponse
,它提供了 passes
和 errors
方法。第一个方法允许您确定数据是否通过表单请求规则进行验证。第二个方法可以在您期望验证失败并希望确定数据是否未通过预期规则时使用。
use Kishieel\RequestUnit\FormRequestValidator; public function some_example_test() { // .. $this->assertFalse($result->passes()); $this->assertArrayHasKey('property_3', $result->errors()); }
选择性验证
对于非常复杂的 FormRequest
,您可能只想测试数据对指定的规则。您可以通过将规则键数组作为 validate
方法的第三个参数来实现这一点。
use Kishieel\RequestUnit\FormRequestValidator; public function some_example_test() { // .. $result = $this->validate($formRequest, $data, ['property_1']); // will keep errors only for `property_1` $result->errors(); }
授权验证
使用 FormRequestValidator
,您可以对 FormRequest
的授权方法进行验证。验证结果将通过验证结果的 passes
方法提供。
测试自定义验证规则
在自定义验证规则的情况下,您可以使用 FormRequestCreator
在运行时创建 FormRequest
并对其进行测试。 FormRequestCreator
接受规则数组和授权回调作为构造函数参数。参数是可选的。如果您更喜欢,可以使用 setRules
和 setAuthorization
方法。
Validator::extend('mac_address', function ($attribute, $value) { return preg_match('/^([0-9A-Fa-f]{2}[:-]){5}([0-9A-Fa-f]{2})$/', strval($value)); });
use Kishieel\RequestUnit\FormRequestValidator; public function some_example_test() { $formRequest = new \Kishieel\RequestUnit\FormRequestCreator([ 'mac_address' => 'required|mac_address' ]); $result = $this->validate($formRequest, ['mac_address' => 'invalid_mac_address']); $this->assertFalse($result->passes()); $this->assertArrayHasKey('mac_address', $result->errors()); }
贡献
在向 master
分支提交任何 pull request 之前,请运行 cs fixer 和单元测试。
composer fix
composer test
变更日志
有关最近更改的更多信息,请参阅变更日志。
许可证
MIT 许可证 (MIT)。有关更多信息,请参阅许可证文件。