在运行phpunit
时,来自身份验证和CSRF的错误是很常见的。
在我们使用的TestCase中:
use WithoutMiddleware;
问题是,当表单失败时,它通常会返回一条Flash消息和旧输入。我们已经禁用了所有中间件,所以我们无法访问Input::old('username');
或flash消息。
此外,我们对这个失败的表单post的测试返回:
Caused by
exception 'RuntimeException' with message 'Session store not set on request.
有没有一种方法可以启用会话中间件并禁用其他所有功能。
发布于 2015-12-18 22:28:48
我找到的最好的方法不是使用WithoutMiddleware
特性,而是修改您想要禁用的中间件。例如,如果您想在测试中禁用VerifyCsrfToken
中间件功能,您可以执行以下操作。
在app/Http/Middleware/VerifyCsrfToken.php
中,添加一个检查APP_ENV
以进行测试的handle
方法。
public function handle($request, Closure $next)
{
if (env('APP_ENV') === 'testing') {
return $next($request);
}
return parent::handle($request, $next);
}
这将覆盖Illuminate\Foundation\Http\Middleware\VerifyCsrfToken
中的handle
方法,从而完全禁用该功能。
发布于 2021-05-28 18:38:24
我可能会迟到,但我想通了:
$this->withoutMiddleware([
'email-verified', //alias does NOT work
EnsureEmailIsVerified::class //Qualified class name DOES WORK
]);
发布于 2020-10-07 13:19:21
下面的方法对我很有效:
use WithoutMiddleware;
public function setUp(): void
{
parent::setUp();
$this->withoutMiddleware();
}
https://stackoverflow.com/questions/34357350
复制相似问题