2016-09-27 125 views
0

我有一個現象: 我有一個Listener,它在onKernelRequest中創建一個閉包,如果它是MasterRequest。我檢查我正在處理的請求是否是MasterRequest,以避免多次運行此關閉。symfony2:在UnitTests中請求MasterRequest的請求

當我在瀏覽器中運行代碼時,一切都很好,並且表現得像預期的那樣。然而,如果我在使用WebTestCase的功能測試中運行phpunit,兩個測試用例的行爲就像在瀏覽器中一樣,但第三個測試用例從來不以MasterRequest的形式出現,因此在測試中我的代碼永遠不會傳遞。

有人更深入瞭解什麼使請求成爲MasterRequest?它與路由有關嗎?導致問題的第三種情況是使用/ with get參數,而其他情況依賴於通用路由。

回答

0

我相信這不是請求,而是HttpKernelInterface

退房的代碼在github。內核或者將每個請求視爲主請求或者作爲子請求。所以它取決於內核。

在兩種情況下可能會在您的測試中創建一個新的內核,但在第三個內核中它是現有的內核。這只是一個猜測,你應該只是調試它。

+0

有趣的問題是,爲什麼測試和現實生活中的行爲不同。 它是一個主請求或一個子請求是顯而易見的。通過調試,我們發現這是跳過代碼的原因。 –