我使用單元測試在Silex中創建應用程序。使用Symfony的flashBag會話進行單元測試
運行單元測試工作正常,對常會處理程序:
$app->register(new Silex\Provider\SessionServiceProvider(), array(
'session.storage.options' => array(
'cookie_lifetime' => 1209600, // 2 weeks
),
));
,並設置該標誌在我的單元測試:
$this->app['session.test'] = true;
如果我不設置session.test標誌,我的單元測試會拋出頭文件已經發送錯誤,並且全部失敗。有了它,我的測試運行良好。
的問題,我嘗試使用flashBag功能(會話信息只持續,直到第一個請求,然後遭到移除):
$foo = $app['session']->getFlashBag()->all();
似乎是flashBag不尊重session.test標誌,並嘗試發送頭,導致我所有的單元測試失敗:
24) Yumilicious \單元測試\驗證\ PersonAccountTest :: setConstraintsPassesWithMinimumAttributes 的RuntimeException:無法啓動,因爲頭公頃會議ve 已經發送。
/webroot/yumilicious/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Storage/NativeSessionStorage.php:142 /根目錄/ yumilicious /供應商/ symfony的/ HTTP的基礎/ Symfony的/組件/ HttpFoundation/Session/Storage/NativeSessionStorage.php:262 /webroot/yumilicious/vendor/symfony/http-foundation/Symfony/Component/HttpFoundation/Session/Session.php:240 /webroot/yumilicious/vendor/symfony/http- foundation/Symfony/Component/HttpFoundation/Session/Session.php:250 /webroot/yumilicious/src/app.php:38 /webroot/yumilicious/tests/Yumilicious/UnitTests/Base.php:/webroot/yumilicious /vendor/silex/silex/src/Silex/WebTestCase.php:34 /webroot/y umilicious /供應商/ EHER/PHPUnit的/ src目錄/ PHPUnit的/ phpunit.php:46 /Webroot公司/ yumilicious /供應商/ EHER/PHPUnit的/ bin中/ PHPUnit的:5
具體來說,行262.註釋掉單行允許我的測試正常工作,並通過綠色。
我已經搜索了很久纔得到這個工作,但沒有任何運氣。我認爲這是因爲flashBag的東西是新的(https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Session/Session.php#L305),舊的方法已被棄用。
任何關於讓我的單元測試工作的建議是非常棒的。
我面臨同樣的問題config_test.yml
集今天在Silex 2.0-dev上。
但堆棧中的答案都沒有辦法。
我想出了一個可能的答案:http://stackoverflow.com/a/34005216/4323472 – Heah