2014-02-26 96 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