testing - 如何访问在测试用例中使用特定 [plone.]browserlayer 定义的 View

标签 testing plone

我是测试新手,我第一次尝试为我的 Plone 产品创建测试。 我在使用 Plone 3.3。

基本测试套件有效,我可以毫无错误地执行它。 我遵循了这个文档:http://plone.org/documentation/kb/testing ...除了我在 Python 类而不是 doctests 中编写测试。

我的问题是我似乎无法访问我的应用程序中定义的 View (我收到 ComponentLookupError)。

问题似乎出在我的应用程序定义的“浏览器层”上。 当我从 configure.zcml 中删除 layer="..."属性时,测试可以毫无问题地访问 View 。但是,如果我把它加回去,它就不起作用了。 我想那是因为 de browserlayer 接口(interface)没有应用到请求。

我发现这个问题的唯一引用是在 googlesitemap 的测试中:http://dev.plone.org/collective/browser/googlesitemap/googlesitemap.common/trunk/googlesitemap/common/tests?rev=

作者似乎为测试做了一个自定义的 ZCML 文件,其中 layer="..."属性已被删除。 (这会起作用,但必须为测试维护一个单独的 zcml 文件似乎很糟糕)

在我的测试中,我包含了以下内容(取自 googlesitemap 测试),它们通过了:

from jambette.site.interfaces import IJambetteLayer # this is my browserlayer
from plone.browserlayer.utils import registered_layers
self.assertTrue(IJambetteLayer in registered_layers())

所以我认为我的皮肤和浏览器层注册正确。

我需要做些什么才能将浏览器层应用于请求吗?

最佳答案

浏览器层接口(interface)使用directlyProvides 简单地“绘制”到请求上。在查看 View 之前,只需在测试设置中这样做:

from zope import interface
from jambette.site.interfaces import IJambetteLayer

...

    directlyProvides(request, IJambetteLayer)

关于testing - 如何访问在测试用例中使用特定 [plone.]browserlayer 定义的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5628089/

相关文章:

python - Q : 'UnboundLocalError' : local variable 'exitErr' referenced before assignment

python - 在以灵活的形式设置另一个字段后,动态更改一个字段的下拉选项。架构

plone - 在 Plone 中自定义敏捷编辑表单模板?

testing - 如何在测试后回滚特定记录?

java - 如何在使用 Mockito.mock() 时启用 STRICT_STUBS

plone - 在 Plone Site 设置中添加一个新的配置链接

python - Plone/IRelatedItems - 如何以编程方式设置灵巧内容类型的 relatedItems?

rest - Plone REST API : How to clear a datetime field with json?

javascript - cucumber /自动化测试 : How to approach the overall concept using javascript functions?

javascript - React 中的单元测试非静态方法