incraigulous/request-hooks

使用查询参数修改应用状态以进行功能测试。

1.0 2017-05-31 14:16 UTC

This package is auto-updated.

Last update: 2024-09-10 04:06:12 UTC


README

通过使用查询参数修改Laravel应用状态以进行浏览器测试。

工作原理

创建钩子
以下是一个示例钩子类,如果设置了test_login查询字符串,则会登录用户。这意味着如果您正在执行功能测试,每次您调用类似yourapp.dev/dashboard?test_login=true的URL时,用户在请求处理之前都会被登录。

<?php

namespace App\RequestHooks;

use Illuminate\Http\Request;
use App\User;
use Incraigulous\RequestHooks\Contracts\RequestHook;

class Login implements RequestHook
{
    /**
     * @var Request
     */
    private $request;

    function __construct(Request $request)
    {
        $this->request = $request;
    }

    /**
     * Should the hook fire?
     * @return bool
     */
    public function shouldHandle()
    {
        if (!$this->request->test_login) return false;
        if (auth()->check()) return false;
        return true;
    }

    /**
     * Do whatever action the hook does
     */
    public function handle()
    {
        $user = user::first();
        auth()->login($user);
    }
}

注册钩子
在config/requestHooks.php中

return [
    /**
     * Which app.env environments should be considered testing environments by the request-hooks test middleware?
     */
    'testEnvironments' => ['development', 'testing', 'staging', 'local'],

    /**
     * Register your request hooks
     */
    'hooks' => [
        \App\RequestHooks\Login::class
    ]
];

安装

composer require incraigulous/request-hooks

注册服务提供者

'providers' => [
   ...,
   Incraigulous\RequestHooks\RequestHooksServiceProvider::class,
   ,,.,
]

将中间件注册为全局中间件在http kernel中

$middleware => [
   ...,
   Incraigulous\RequestHooks\TestingMiddleware::class
   ,,.,
]

或者,您可以选择扩展Incraigulous\RequestHooks\TestingMiddleware或者如果您需要自定义功能,则编写自己的。

配置

testEnvironments: 一个应该触发钩子的环境名称数组(查看app.env配置设置)。
hooks: 注册您的钩子类。