1

いくつかの Dexterity タイプを持つカスタム製品があり、そのうちのいくつかは 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')

applyProfileそれらはパッケージのセットアップでインストール要件としてリストされていますが、明示的にplone.app.dexterityと を試してみましたquickInstallProductが、何らかの理由で Dexterity FTI が呼び出されたときに登録されていないようです。

Plone 4.1、Dexterity 1.1、および plone.app.testing 4.2 を使用しています

4

1 に答える 1

1

Mikkoが提案したように、私はsetuphandler構成を製品のzcmlからimport_steps.xml代わりにGenericSetupに移動し、明示的な依存関係を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になり、サイト構造のテストは、期待どおりにセットアップされていることを示しています。

再度、感謝します!

于 2012-08-01T00:49:05.877 に答える