2012-10-24 76 views
1

有沒有辦法在不修改源代碼的情況下將PLONE_SITE_ID從其默認位置plone.app.testing.interfaces更改?更改plone.app.testing中的站點根目錄/ Plone 4

我使用的Plone 4幾種定製產品,並plone.app.testing(4.0.2)與相對成功。在我的自定義產品中,有幾個實例可以在執行目錄搜索時找到對象的硬編碼物理路徑(例如,我的網站根目錄是'mySiteID',因此有幾個自定義查詢使用path=/mySiteID/folder1/etc..進行目錄搜索)。

問題是plone.app.testing配置(PLONE_FIXTURE)的Plone實例中的站點根目錄是PLONE_SITE_ID = 'plone'。因此,我在我的測試中添加任何對象總是有/plone爲根,而不是/mySiteID和我的測試中突破。我可以通過改變接口的定義值解決這個問題,但是這似乎是一個醜陋的黑客。

+1

不是硬編碼你的查詢路徑好多了嗎?例如,從上下文對象獲取路徑。 –

+0

我同意。但是,我必須處理很多遺留代碼,並且我預計未來在任何時候都不會更改網站的名稱。 – RGHummel

回答

1

如果你絕對有到,你可以monkeypatch ID;作爲測試跑步者部分的一部分,在建立:

[test] 
# ... 
initialization = 
    import plone.app.testing.interfaces 
    plone.app.testing.interfaces = 'mySiteID' 
+0

謝謝你的幫助。 – RGHummel

1

Martijn是正確的。雖然,他的回答並沒有完全解決問題。你需要猴子修補程序多個plone.app.testing進口,使其實際工作:

[test] 
... 

initialization = 
    import plone.app.testing.helpers 
    plone.app.testing.helpers.PLONE_SITE_ID = 'Plone' 
    import plone.app.testing.interfaces 
    plone.app.testing.interfaces.PLONE_SITE_ID = 'Plone' 
    import plone.app.testing.layers 
    plone.app.testing.layers.PLONE_SITE_ID = 'Plone'