gpt4 book ai didi

testing - 测试期间 Dexterity 类型的 ComponentLookupError

转载 作者:行者123 更新时间:2023-11-28 20:45:33 24 4
gpt4 key购买 nike

我有一个具有多种敏捷类型的自定义产品,setuphandler 使用其中的几种来创建站点结构。这在测试之外没有任何问题,但在测试中它总是失败:

Traceback (most recent call last):
[snip]
File "/opt/ctcc_plone/src/ctcc.model/ctcc/model/setuphandlers.py", line 52, in setupStructure
random = createSiteFolder(portal, 'ctcc.model.servicefolder', 'Randomisation', 'random')
File "/opt/ctcc_plone/src/ctcc.model/ctcc/model/setuphandlers.py", line 35, in createSiteFolder
return createContentInContainer(context, type, title=title, id=id)
File "/opt/ctcc_plone/eggs/plone.dexterity-1.1-py2.7.egg/plone/dexterity/utils.py", line 166, in createContentInContainer
content = createContent(portal_type, **kw)
File "/opt/ctcc_plone/eggs/plone.dexterity-1.1-py2.7.egg/plone/dexterity/utils.py", line 112, in createContent
fti = getUtility(IDexterityFTI, name=portal_type)
File "/opt/ctcc_plone/eggs/zope.component-3.9.5-py2.7.egg/zope/component/_api.py", line 169, in getUtility
raise ComponentLookupError(interface, name)
ComponentLookupError: (<InterfaceClass plone.dexterity.interfaces.IDexterityFTI>, 'ctcc.model.servicefolder')

我确保在安装过程中导入包的配置文件:

class CTCCModelSandboxLayer(PloneSandboxLayer):
defaultBases = (PLONE_FIXTURE,)

def setUpZope(self, app, configurationContext):
import ctcc.model
self.loadZCML(package=ctcc.model)

def setUpPloneSite(self, portal):
self.applyProfile(portal, 'ctcc.model:default')

虽然它们在包的设置中被列为安装要求,但我还在 plone.app.dexterity 上尝试了显式的 applyProfile,以及 quickInstallProduct,但由于某些原因,Dexterity FTI 在调用时似乎未注册。

我正在使用 Plone 4.1、Dexterity 1.1 和 plone.app.testing 4.2

最佳答案

按照 Mikko 的建议,我将 setuphandler 配置从产品的 zcml 移到了 GenericSetup import_steps.xml 中,从而允许指定对 typeinfo 的显式依赖:

<?xml version="1.0"?>
<import-steps>
<import-step
id="ctcc-setup"
title="Additional CTCC setup"
handler="ctcc.model.setuphandlers.setupVarious"
version="20120731"
>
<dependency step="typeinfo" />
</import-step>
</import-steps>

测试现在在 applyProfile 阶段运行而不是失败,并且站点结构的测试显示它正在按预期设置。

再次感谢!

关于testing - 测试期间 Dexterity 类型的 ComponentLookupError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11734176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com