在plone.app.testing/plone 4中更改站点根目录
有没有一种方法可以在不修改源代码的情况下,将在plone.app.testing/plone 4中更改站点根目录,plone,zope,Plone,Zope,有没有一种方法可以在不修改源代码的情况下,将PLONE\u站点ID从PLONE.app.testing.interfaces的默认值更改为PLONE\u站点ID 我正在将Plone 4与几个定制产品一起使用,并且相对成功地测试了Plone.app(4.0.2)。在我的自定义产品中,有几个实例在执行目录搜索时存在硬编码的物理路径来定位对象(例如,我的站点根是“mySiteID”,因此一些自定义查询使用path=/mySiteID/folder1/etc..进行目录搜索) 问题是Plone.app.
PLONE\u站点ID
从PLONE.app.testing.interfaces
的默认值更改为PLONE\u站点ID
我正在将Plone 4与几个定制产品一起使用,并且相对成功地测试了Plone.app
(4.0.2)。在我的自定义产品中,有几个实例在执行目录搜索时存在硬编码的物理路径来定位对象(例如,我的站点根是“mySiteID”,因此一些自定义查询使用path=/mySiteID/folder1/etc..
进行目录搜索)
问题是Plone.app.testing
配置(Plone\u FIXTURE
)的Plone实例中的站点根目录是Plone\u site\u ID='Plone'
。因此,我在测试中添加的任何对象总是将/plone
作为根,而不是/mySiteID
,我的测试将中断。我可以通过更改接口中定义的值来解决此问题,但这似乎是一个丑陋的黑客行为。如果您必须这样做,您可以对id进行monkeypatch;作为测试转轮部件的一部分,在构建中执行此操作:
[test]
# ...
initialization =
import plone.app.testing.interfaces
plone.app.testing.interfaces = 'mySiteID'
马蒂恩是对的。尽管如此,他的回答并没有完全起作用。您需要对多个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'
不在查询中硬编码路径不是更好吗?例如,从上下文对象获取路径。我同意。但是,我必须处理很多遗留代码,我不希望在将来的任何时候更改站点的名称。