2010-10-20 135 views
4

我試圖在Symfony中爲我的應用程序創建一個單元測試。Symfony單元測試不會加載app_bobals

我/config/app.yml看起來是這樣的:

all: 
    tmp_dir: "tmp" 

    # usps 
    usps_username: xxxxx 
    usps_password: xxxxx 
    usps_dir: usps 
在單元測試

,當我運行類似:

$t->comment(sfConfig::get('app_usps_username')); 

它只會輸出和空行。這是怎麼回事?我如何從單元測試的app.yml中訪問這些值?如果我試圖從其他地方訪問這些值,它將按預期工作。

回答

5

由於這是一個單元測試,所以配置沒有初始化。如果整個框架默認加載,那麼它就不是真正的單元測試。

如果依靠配置選項不是明確設置他們在您的測試:

sfConfig::set('usps_username', 'my username'); 

與它作爲整個應用程序的不同一點點被自舉功能測試,你可以輕鬆地訪問您的配置。

編輯:

如果你看看你的緩存目錄,你會看到,所有的配置都應用程序的目錄(緩存/前端/測試/配置/ config_app.yml.php)下產生的。如果你把它放在主要的config/app.yml中,那只是所有的應用程序都會繼承這些值。仍然需要在應用程序的上下文中運行腳本以使用它們。換句話說:它應該是可能的,但是您必須初始化適當的應用程序配置,而不是項目配置(因此在您的引導程序中使用frontendConfiguration而不是ProjectConfiguration)。

但是,我認爲保持單元測試儘可能獨立於應用程序是一種很好的做法。

+0

我檢查了bootstrap.php文件和(在這裏繼續內存)它看起來像它正在做*東西*與配置文件夾。有沒有辦法讓它加載這些值? – gregghz 2010-10-21 05:54:13

+0

謝謝,我喜歡你的緩存目錄的解決方法,因爲你發現他們所有的sfConfig :: add()命令,你可以複製到你的測試。 – Tapper 2012-09-26 09:40:05