2011-06-21 92 views
3

爲PHP建立白名單時,我遇到了以下問題,一切正常,但當我把它,系統崩潰,因爲它試圖包括所有的文件。這使得它包含一個文件,它有一個require_once,因此它會崩潰應用程序。設置白名單

編輯在啓動時,系統定義了一些常量。由於這些常量在包含創建白名單的所有數據時未定義,因此它會嘗試訪問不存在的文件夾(PHP假設常量是字符串),因此require_once會失敗,並且由於它是必需的,它崩潰。

此外,如果有任何幫助,白名單正用於與Selenium一起使用。也許這是問題的根源?

+0

它作爲edorian在我們的代碼中寫道。也許你的代碼是做一個「需求」的代碼。編輯您的問題以添加實際的錯誤輸出作爲「崩潰應用程序」不是很具描述性。 –

+0

可能您可以在PHPUnit引導程序或基本測試用例中定義該常量? – hakre

+0

不會違背良好的做法嗎?無論如何,我會嘗試,看看它是否至少有效。 – Lumbendil

回答

4

那麼收集代碼覆蓋率信息的系統有點必須要求所有的文件,以便預期的行爲。 (技術上講,它不,但它確實)

如果您正在使用require_once這不應該是一個問題,因爲PHPUnit的還採用了"_once"要求的文件。

我們在充滿require_once語句的代碼庫上使用白名單,我遇到的唯一問題是在兩個地方定義了一個類。

+0

這裏的主要問題是代碼依賴於框架,因此,當單獨加載時,它崩潰了(我對框架的代碼覆蓋範圍不感興趣)。 – Lumbendil

+0

@Lumbendil通常在''phpunit bootstrap =「yourBootstrap.php」>中引導框架,但它不包含在白名單中(或者在那裏有'')。你的問題是你的代碼需要框架的一部分,並且不能解決問題? – edorian

+0

atm我只是在構建** Selenium **測試,這就是爲什麼引導程序目前不引導框架。我們沒有計劃從單元測試atm開始,我應該引導它來完成這項工作嗎? – Lumbendil