Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在plone.app.testing/plone 4中更改站点根目录_Plone_Zope - Fatal编程技术网

在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'

不在查询中硬编码路径不是更好吗?例如,从上下文对象获取路径。我同意。但是,我必须处理很多遗留代码,我不希望在将来的任何时候更改站点的名称。