因此,运行时出现Authentication和CSRF的错误是很常见的phpunit
.
所以在TestCase中我们使用:
use WithoutMiddleware;
这个问题是当表单失败时,它通常会返回Flash消息和旧输入.我们已禁用所有中间件,因此我们无法访问Input::old('username');
或闪存消息.
此外,我们对此失败表单的测试返回:
Caused by exception 'RuntimeException' with message 'Session store not set on request.
有没有办法启用会话中间件并禁用其他所有内容.
我发现这样做的最好方法不是使用WithoutMiddleware
特征,而是修改要禁用的中间件.例如,如果要VerifyCsrfToken
在测试中禁用中间件功能,可以执行以下操作.
在里面app/Http/Middleware/VerifyCsrfToken.php
,添加一个handle
检查APP_ENV
测试的方法.
public function handle($request, Closure $next) { if (env('APP_ENV') === 'testing') { return $next($request); } return parent::handle($request, $next); }
这将覆盖其中的handle
方法Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
,完全禁用该功能.