kishieel/laravel-form-request-unit

Laravel 表单请求单元测试助手

1.1.2 2021-12-09 09:53 UTC

This package is auto-updated.

Last update: 2024-09-09 15:57:34 UTC


README

Integration

为 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,它提供了 passeserrors 方法。第一个方法允许您确定数据是否通过表单请求规则进行验证。第二个方法可以在您期望验证失败并希望确定数据是否未通过预期规则时使用。

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 接受规则数组和授权回调作为构造函数参数。参数是可选的。如果您更喜欢,可以使用 setRulessetAuthorization 方法。

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)。有关更多信息,请参阅许可证文件