2014-02-26 97 views
2

根据升级说明,我最近从Laravel 4.0升级到4.1,现在当单元测试我的csrf标记时将无法验证。我在此处发布了代码:http://laravel.io/bin/7qRx在单元测试(Laravel 4.1)期间Laravel csrf验证失败

当浏览网站并提交表单时,csrf验证似乎正常,但是当我运行单元测试以验证相同的表单时,csrf验证失败。在升级到4.1之前它已经工作。

我在这里发现了类似的问题,但也没有列出解决方案。 https://github.com/laravel/laravel/issues/2633

任何想法?

回答

2

我找到了解决方案。您必须添加

Session :: start();

到setup()方法。呼叫路线时解决会话相关的问题。

显然Laravel在调用路由时启动会话,并且如果尚未创建路由,则以前的会话数据将被覆盖。

找到的依据是什么在这里张贴的解决方案: Laravel 4 testing session in controllers

+0

该解决方案也适用于Laravel 5.1。 – MisterBla

0

我的建议是在配置​​文件中设置一个测试CSRF令牌,并在过滤器中检查它。但这很麻烦。

+0

这个工作,直到我发现初始化使用Session会话的正确方法:start()方法。 – warkior