PhpStorm 令牌不匹配异常中的 PHPUnit 测试

Posted

技术标签:

【中文标题】PhpStorm 令牌不匹配异常中的 PHPUnit 测试【英文标题】:PHPUnit testing in PhpStorm token mismatch exception 【发布时间】:2018-11-21 09:14:45 【问题描述】:

我正在通过 PhpStorm 内置测试环境Laravel 项目进行单元测试。我收到令牌不匹配异常

所有配置都是正确的,并且工作正常。突然出现了这个错误。我尝试使用终端,它工作正常。我正在 Vagrant 下开发这个项目。

我能做些什么来解决这个问题?

我搜索了一下,发现如下更改 Laravel 的 VerifyCsrfToken 可以解决这个问题。但我也需要将其设为默认值。 $except = ['/*']

【问题讨论】:

在您的测试中尝试Disabling Middleware。我不会添加$except = ['/*'],因为它会为所有路由禁用它......或者你可以通过调用$this->call('POST', '/your-route', ['_token' => csrf_token(), ...]);传递csrf令牌 @LazyOne - 谢谢它的工作 【参考方案1】:

我遇到了同样的问题,我通过将所选“测试框架”中的“默认配置文件”选项设置为项目根目录中的 phpunit.xml 来修复它。 PHPStorm 似乎默认使用“本地”phpunit 配置。我在检查 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken 中的 runningUnitTests() 方法时想到了这个想法;

并且看到 dat APP_ENV 是“本地”,而不是我的 PHPunit.xml 中指定的“测试”

希望这会有所帮助。

【讨论】:

【参考方案2】:

我在测试课中使用了 WithoutMiddleware 特征。它工作得很好。我也尝试了@Lijubadr 的回复。它也奏效了。谢谢。

【讨论】:

以上是关于PhpStorm 令牌不匹配异常中的 PHPUnit 测试的主要内容,如果未能解决你的问题,请参考以下文章

本地主机上 laravel 5.3 中 ajax 发布请求中的 CSRF 令牌不匹配异常

在 laravel 5.5 的验证 csrf 令牌中没有收到错误令牌不匹配异常

PhpStorm 配置 PHPUnit

AWS Cloudfront 导致 CSRF 令牌不匹配异常

会话超时后的 laravel csrf 令牌不匹配异常

Laravel CSRF 令牌不匹配异常。通过 jQuery ajax 向资源路由发送“Put”请求