incraigulous / request-hooks
使用查询参数修改应用状态以进行功能测试。
1.0
2017-05-31 14:16 UTC
Requires (Dev)
- illuminate/support: ^5.4
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: 注册您的钩子类。