相关疑难解决方法(0)

单元测试Laravel的FormRequest

我正在尝试对各种自定义FormRequest输入进行单元测试.我找到了解决方案:

  1. 建议使用该$this->call(…)方法并response使用期望值断言(链接到答案).这是过度的,因为它直接依赖于路由控制器.

  2. 泰勒的测试,从Laravel框架 中发现的 tests/Foundation/FoundationFormRequestTest.php.那里有很多嘲弄和开销.

我正在寻找一种解决方案,我可以根据规则对各个字段输入进行单元测试(独立于同一请求中的其他字段).

SampleRequest示例:

public function rules()
{
    return [
        'first_name' => 'required|between:2,50|alpha',
        'last_name'  => 'required|between:2,50|alpha',
        'email'      => 'required|email|unique:users,email',
        'username'   => 'required|between:6,50|alpha_num|unique:users,username',
        'password'   => 'required|between:8,50|alpha_num|confirmed',
    ];
}
Run Code Online (Sandbox Code Playgroud)

期望的测试:

public function testFirstNameField()
{
   // assertFalse, required
   // ...

   // assertTrue, required
   // ...

   // assertFalse, between
   // ...
}

public function testLastNameField()
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

我如何单独测试(断言)每个字段的每个验证规则?

php unit-testing request laravel laravel-5.2

18
推荐指数
3
解决办法
5914
查看次数

Laravel 表单请求在验证后添加自定义变量

这是我的表单请求代码,我想在验证成功后添加新变量,这样我就可以在我的控制器上访问该变量:

class CouponRequest extends Request
{
    /**
     * Get the validation rules that apply to the request.
     *
     * @return array
     */
    public function rules()
    {
        return [
            'start_year' => 'required',
            'start_month' => 'required',
            'start_day' => 'required',
            'start_time' => 'required',
            'finish_year' => 'required',
            'finish_month' => 'required',
            'finish_day' => 'required',
            'finish_time' => 'required',
        ];
    }

    public function afterValidation()
    {
        $this->start_date = Carbon::create( $this->start_year, $this->start_month, $this->start_day );
    }
}
Run Code Online (Sandbox Code Playgroud)

所以在验证没有错误后,我可以在我的控制器上调用这个实例:

$request->start_date;
Run Code Online (Sandbox Code Playgroud)

我可以这样做吗?

validation laravel

5
推荐指数
2
解决办法
5803
查看次数

在 Laravel 5.5 上使用表单请求验证的 MethodNotAllowedHttpException

当我在 Laravel 5.5 上使用表单请求验证时,这很奇怪,我所有的发布请求都将是 405 不允许的方法,但是当我使用标准验证时变得正常,这里我的代码是:

php工匠路线:列出

+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
| Domain | Method   | URI                                    | Name               | Action                                                    | Middleware |
+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
|        | POST     | api/register                           |                    | App\Http\Controllers\AuthController@register              | api        |
+--------+----------+----------------------------------------+--------------------+-----------------------------------------------------------+------------+
Run Code Online (Sandbox Code Playgroud)

请求使用失眠在此处输入图片说明

我失眠时的 base_api 值为http://mylocal.app/api

错误信息:

Symfony\Component\HttpKernel\Exception\MethodNotAllowedHttpException
Run Code Online (Sandbox Code Playgroud)

错误显示消息: 在此处输入图片说明

路由器(api.php):

Route::post('register', 'AuthController@register');
Run Code Online (Sandbox Code Playgroud)

控制器(AuthController.php):

use App\Http\Requests\StoreRegistration;

public function register(StoreRegistration $request)
{

    $email = $request->email;
    $name = $request->name;
    $password = $request->password;

    $user = User::create([
        'name' => $name,
        'email' => $email, …
Run Code Online (Sandbox Code Playgroud)

validation laravel laravel-5

0
推荐指数
1
解决办法
1581
查看次数