运行代码测试时出现TokenMismatch错误

时间:2015-06-06 05:43:17

标签: laravel-5 codeception

当我运行codeception测试用例时,我在日志文件中收到此错误。如何解决这个问题?

代码:

 public function testUpdatePhone(FunctionalTester $I)
 {
        $I->wantTo('Test update phone');
        $I->sendPUT('/admin/phone/100', [
            'label' => 'My new label'
        ]);
        $I->see('Phone Number updated successfully.');
 }

命令:

  

./ vendor / bin / codecept run   测试/功能/ AdminPhoneTestCest.php:testUpdatePhone

日志文件错误:

  

[2015-06-06 05:34:02] local.ERROR:异常   '照亮\会话\ TokenMismatchException'在   /var/www/xxxx/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:46

提前致谢:)

2 个答案:

答案 0 :(得分:1)

此问题已通过添加中间件方法修复,如下所示

public function handle($request, Closure $next)
{
 if ($request->header('user-agent') == 'Symfony2 BrowserKit') {
  return $next($request);
 }

 throw new TokenMismatchException;
}

参考:https://laracasts.com/discuss/channels/general-discussion/latest-v5-laravelframework-csrfmiddleware-changes-broke-codeception-functional-tests

答案 1 :(得分:0)

如果你正在使用phantomjs,你需要确保在你的设置中clear_cookies: true,因为phantomjs似乎不支持正常restart: true,因此它使用在后续测试中无效的相同标记。