【问题标题】:Should I simulate FE request in Functional Testing in TYPO3?我应该在 TYPO3 的功能测试中模拟 FE 请求吗?
【发布时间】:2015-11-23 13:37:48
【问题描述】:

我正在尝试在 TYPO3 和整体范围内理解功能测试的概念。

我的目的是测试我的扩展控制器。为简单起见,我们假设它只有两种方法:listAction()addAction($object)

我检查了一些核心测试,其中一个是来自 Extbase 的 EnableFieldsTest,它执行以下操作:加载一些特制的扩展,模拟 FE(通过特殊的 JsonRenderer.ts),调用该扩展的 listAction() 和然后检查输出(特别是 JSON)。

所以,我决定对我的控制器做同样的事情,模拟 FE,它叫我的listAction()。唯一的区别是我的扩展不使用 JSON View,而是使用通常的 Fluid,它会生成 HTML。

为了使其按预期工作,我需要:

  1. 对我的扩展进行重大更改,因此它在测试上下文中输出 JSON,但这对我来说似乎有点 hacky。
  2. 不要使用 Core 提供的 HasRecordConstraint,而只是检查使用 assertContains() 输出的 HTML,这似乎也很老套。
  3. 创建我的扩展的自定义版本,它输出预期的 JSON 并仅将其用作 Fixture。但这使得这样的测试毫无用处。

因此我被困在这一点上,需要理解:

  1. 是像我一样模拟 FE 请求,还是我现在已经脱离了功能测试的概念?
  2. 如果我想通过 addAction($object) 测试对象创建并确保 f.e.向 REST 服务发出请求,我应该存根该服务还是可以以某种不同的方式捕获呼叫?

【问题讨论】:

  • 这实际上取决于您要测试的内容。你会期望什么样的失败状态,例如你的考试应该什么时候休息。如果您想测试前端,您应该使用专用工具(selenium 或任何其他验收测试套件)。
  • @pgampe,谢谢你的解释。我想检查一下,我的listAction() 是否为当前登录的用户提供了一组正确的数据。而且你是对的 - 我在这里不需要 FE,因为我可以简单地在我的控制器中模拟 view 并期望使用特定的参数集调用它。

标签: typo3 functional-testing


【解决方案1】:

自 TYPO3 8 以来,集成了验收测试,这是您想要拥有的更多东西。

  • 使用功能测试来调用操作并检查其返回值,但不要使用前端
  • 使用验收测试调用前端并检查插件的 HTML 输出。

最好是检查内核的验收测试。

【讨论】:

  • 感谢您的回答。我被一些核心功能测试误导了。但经过一段时间阅读指南和手册后,我也得出了这个结论。因此,现在我为与测试相关的记录或对象提供固定装置,模拟事物,例如“查看”,并将期望与实际结果进行比较。
猜你喜欢
  • 2021-06-18
  • 1970-01-01
  • 2022-07-13
  • 2012-12-31
  • 1970-01-01
  • 2017-01-29
  • 1970-01-01
  • 2019-01-12
  • 2015-10-21
相关资源
最近更新 更多