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 令牌中没有收到错误令牌不匹配异常