我們有一個基於敏捷度的內容類型,它必須從父級繼承字段的默認值。我們使用以下命令:如何使用IContextAwareDefaultFactory測試內容類型
在模型:
<model xmlns="http://namespaces.plone.org/supermodel/schema"
xmlns:indexer="http://namespaces.plone.org/supermodel/indexer"
xmlns:form="http://namespaces.plone.org/supermodel/form">
<schema>
...
<field name="subjects" type="zope.schema.Tuple" indexer:searchable="true">
...
<defaultFactory>my.package.content.default_subjects</defaultFactory>
...
</field>
</schema>
</model>
工廠聲明如下:
from zope.schema.interfaces import IContextAwareDefaultFactory
...
@provider(IContextAwareDefaultFactory)
def default_subjects(context):
return getattr(context, 'subjects',())
這運行的實例時工作得很好:
(Pdb) context
<MyType at /Plone/folder>
(Pdb) type(context)
<type 'Acquisition.ImplicitAcquisitionWrapper'>
但當環境未被包裝時運行測試時失敗:
(Pdb) context
<MyType at test>
(Pdb) type(context)
<class 'my.package.content.MyType'>
我該如何解決這個問題?
勉強相關:[類似的問題](https://github.com/collective/collective.newsticker/blob/master/src/collective/newsticker/controlpanel。 py#L22-L30)我前一段時間。 – hvelarde
你正在運行什麼類型的測試? 你看看https://github.com/plone/plone.dexterity/blob/master/plone/dexterity/tests/test_content.py#L492-L523 從這我收集它取決於你的架構正確加載進入fti。 也許這是缺少。取決於你的測試設置。 – do3cc
這些是測試:https://github.com/plonegovbr/brasil.gov.agenda/blob/07b978038f5b0da18a66d449ec8f2b1c7e03d560/src/brasil/gov/agenda/tests/test_agendadiaria.py#L80-L98 – hvelarde